我为Android应用程序构建了一个用于向facebook发布内容的空气,并且在成功时向php文件发送URL查询以添加内容的帖子ID以及fb_id
和用户名。问题是它没有添加我给它的值而是添加相同的数字(不知道它来自哪里)到post_id
和fb_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
答案 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
个建议。