2017-10-21 55 views
0

我为用户提供的个人资料页,但我得到这个错误:不正确的整数值:“”列“ID”

Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 1366 Incorrect integer value: '' for column 'id' at row 1 in C:\wamp64\www\social_network\classes\DB.php on line 12 (!) PDOException: SQLSTATE[HY000]: General error: 1366 Incorrect integer value: '' for column 'id' at row 1 in C:\wamp64\www\social_network\classes\DB.php on line 12

我相信,我的\classes\DB.php是正确的,因为它是连接到其他的PHP文件。这是我使用的“个人资料页”代码:

谢谢您的时间。

Call Stack 
# Time Memory Function Location 
1 0.0009 391176 {main}() ...\profile.php:0 
2 0.0329 444848 Post::createPost() ...\profile.php:62 
3 0.0330 445224 DB::query() ...\Post.php:25 
4 0.0349 461048 execute () ...\DB.php:12 

<?php 
include('./classes/DB.php'); 
include('./classes/Login.php'); 
include('./classes/Post.php'); 
include('./classes/Image.php'); 

$username = ""; 
$verified = False; 
$isFollowing = False; 
if (isset($_GET['username'])) { 
     if (DB::query('SELECT username FROM users WHERE username=:username', array(':username'=>$_GET['username']))) { 

       $username = DB::query('SELECT username FROM users WHERE username=:username', array(':username'=>$_GET['username']))[0]['username']; 
       $userid = DB::query('SELECT id FROM users WHERE username=:username', array(':username'=>$_GET['username']))[0]['id']; 
       $verified = DB::query('SELECT verified FROM users WHERE username=:username', array(':username'=>$_GET['username']))[0]['verified']; 
       $followerid = Login::isLoggedIn(); 

       if (isset($_POST['follow'])) { 

         if ($userid != $followerid) { 

           if (!DB::query('SELECT follower_id FROM followers WHERE user_id=:userid AND follower_id=:followerid', array(':userid'=>$userid, ':followerid'=>$followerid))) { 
             if ($followerid == 6) { 
               DB::query('UPDATE users SET verified=1 WHERE id=:userid', array(':userid'=>$userid)); 
             } 
             DB::query('INSERT INTO followers VALUES (null, :userid, :followerid)', array(':userid'=>$userid, ':followerid'=>$followerid)); 
           } else { 
             echo 'Already following!'; 
           } 
           $isFollowing = True; 
         } 
       } 
       if (isset($_POST['unfollow'])) { 

         if ($userid != $followerid) { 

           if (DB::query('SELECT follower_id FROM followers WHERE user_id=:userid AND follower_id=:followerid', array(':userid'=>$userid, ':followerid'=>$followerid))) { 
             if ($followerid == 6) { 
               DB::query('UPDATE users SET verified=0 WHERE id=:userid', array(':userid'=>$userid)); 
             } 
             DB::query('DELETE FROM followers WHERE user_id=:userid AND follower_id=:followerid', array(':userid'=>$userid, ':followerid'=>$followerid)); 
           } 
           $isFollowing = False; 
         } 
       } 
       if (DB::query('SELECT follower_id FROM followers WHERE user_id=:userid AND follower_id=:followerid', array(':userid'=>$userid, ':followerid'=>$followerid))) { 
         //echo 'Already following!'; 
         $isFollowing = True; 
       } 

       if (isset($_POST['deletepost'])) { 
         if (DB::query('SELECT id FROM posts WHERE id=:postid AND user_id=:userid', array(':postid'=>$_GET['postid'], ':userid'=>$followerid))) { 
           DB::query('DELETE FROM posts WHERE id=:postid and user_id=:userid', array(':postid'=>$_GET['postid'], ':userid'=>$followerid)); 
           DB::query('DELETE FROM post_likes WHERE post_id=:postid', array(':postid'=>$_GET['postid'])); 
           echo 'Post deleted!'; 
         } 
       } 


       if (isset($_POST['post'])) { 
         if ($_FILES['postimg']['size'] == 0) { 
           Post::createPost($_POST['postbody'], Login::isLoggedIn(), $userid); 
         } else { 
           $postid = Post::createImgPost($_POST['postbody'], Login::isLoggedIn(), $userid); 
           Image::uploadImage('postimg', "UPDATE posts SET postimg=:postimg WHERE id=:postid", array(':postid'=>$postid)); 
         } 
       } 

       if (isset($_GET['postid']) && !isset($_POST['deletepost'])) { 
         Post::likePost($_GET['postid'], $followerid); 
       } 

       $posts = Post::displayPosts($userid, $username, $followerid); 


     } else { 
       die('User not found!'); 
     } 
} 

?> 
<h1><?php echo $username; ?>'s Profile<?php if ($verified) { echo ' - Verified'; } ?></h1> 
<form action="profile.php?username=<?php echo $username; ?>" method="post"> 
     <?php 
     if ($userid != $followerid) { 
       if ($isFollowing) { 
         echo '<input type="submit" name="unfollow" value="Unfollow">'; 
       } else { 
         echo '<input type="submit" name="follow" value="Follow">'; 
       } 
     } 
     ?> 
</form> 

<form action="profile.php?username=<?php echo $username; ?>" method="post" enctype="multipart/form-data"> 
     <textarea name="postbody" rows="8" cols="80"></textarea> 
     <br />Upload an image: 
     <input type="file" name="postimg"> 
     <input type="submit" name="post" value="Post"> 
</form> 

<div class="posts"> 
     <?php echo $posts; ?> 
</div> 
+0

要我们来算的线路?什么是“第12行”? –

+0

哦抱歉BRO在此代码行12是空的,但在/classes/DB.php是陈述书$>执行($ PARAMS);而在数据库中的id是一个整数 – karim

+0

这个错误通常发生在INSERT或UPDATE查询中。那么特别是哪个查询导致了这个错误?该表定义为什么是“id”列?你是故意设置一个空值还是缺少一个AUTO_INCREMENT标志? – rickdenhaan

回答

0

General error: 1366 Incorrect integer value: '' for column 'id' [...]

您正在尝试字符串/ VARCHAR值''(空字符串)保存到列“ID”是一个整数类型。由于您无法在整数列中保存字符串,因此您会收到此错误消息。

由于它是一个AUTO_INCREMENT列的解决方案是不提供该列的值在所有。您可以通过添加要填写的INSERT声明中的列来完成此操作。

INSERT INTO Table(colA, colB) VALUES (val1, val2); 

这样所有剩余的列将获得默认值或AUTO_INCREMENT值。