php向mySql数据库添加错误的值

时间:2014-04-02 11:30:14

标签: php mysql

我为Android应用程序构建了一个用于向facebook发布内容的空气,并且在成功时向php文件发送URL查询以添加内容的帖子ID以及fb_id和用户名。问题是它没有添加我给它的值而是添加相同的数字(不知道它来自哪里)到post_idfb_id。我知道移动应用程序正在发送正确的值。

PHP:

<?php
/*
------------variables set in flash--------------

 videoVars.postId = result.id
 videoVars.uid = uid //fb user id
 videoVars.firstName = firstName
 videoVars.lastName = lastName

*/

$postId = $_REQUEST['postId'];
$uid = $_REQUEST['uid'];
$firstName = $_REQUEST['firstName'];
$lastName = $_REQUEST['lastName'];

echo $postId.'<br/>';
echo $uid.'<br/>';
echo $firstName.'<br/>';
echo $lastName.'<br/>';



//connect to database
include('db-connect.php');

$addVideo = mysqli_query($dbc , "INSERT INTO content (content_id, post_id, fb_id, first_name, last_name ) VALUES('','".$postId."','".$uid."','".$firstName."','".$lastName."')");

?>

我为post_id和user_id得到的值是相同的,即使它们应该是不同的。我手动将vars输入到浏览器中的地址栏,但它仍然以相同的方式行为不端。我可以添加多行的唯一方法是将其添加到phpMyAdmin

的sql选项卡中

3 个答案:

答案 0 :(得分:1)

如果您的echo调用输出正确的值,请检查数据库表结构并确保UNIQUE没有设置fb_id键。

然后,确保您使用mysqli_real_escape_string ( mysqli $link , string $escapestr )转义所有内容。 http://ca3.php.net/manual/en/mysqli.real-escape-string.php

content_id是否为auto_increment值?如果是这样,请尝试传递NULL,而不是单引号,而不是空字符串。

要进行调试,您还可以尝试回显查询(首先将其分配给变量$sql = "[QUERY HERE]";,然后将变量传递给函数,然后回显$sql变量,最后手动调用您的文件。

答案 1 :(得分:0)

我猜你在content_id字段上有问题。它应该具有auto_increment属性。

在你的sql中,当你将content_id作为空白值插入''时,它将转换为0,下次当你再次插入一个空白值时,你将有'重复项'0'用于键'PRIMARY'“消息。

要修复它,只需删除查询中的主键字段即可 即:

$addVideo = mysqli_query($dbc , "INSERT INTO content ( post_id, fb_id, first_name, last_name ) VALUES('".$postId."','".$uid."','".$firstName."','".$lastName."')");

或者你可以为它插入一个空值:

$addVideo = mysqli_query($dbc , "INSERT INTO content (content_id, post_id, fb_id, first_name, last_name ) VALUES(null,'".$postId."','".$uid."','".$firstName."','".$lastName."')");

您可以尝试打印出当前错误的SQL错误,如下所示:

$addVideo = mysqli_query($dbc , "INSERT INTO content (content_id, post_id, fb_id, first_name, last_name ) VALUES('','".$postId."','".$uid."','".$firstName."','".$lastName."')");
if (!$addVideo) {
        printf("Error: %s\n", mysqli_error($dbc));
    }

答案 2 :(得分:0)

问题是id被存储为数据库中的int,并且最大允许int值是2147483647,每次都放入,因为数字ID的数字大于2147483647和其中一个字段设置为唯一,它只能添加一行。我已经将类型更改为bigint,现在工作正常。我还实施了一些@ dAngelov个建议。