所以我的android应用程序将JSON数据发送到服务器,并且PHP脚本接受它,首先检查是否存在该用户的现有记录,如果没有,则将它们添加到数据库。出于某种原因,它不起作用。始终执行INSERT语句。当我在不同的PHP页面上检查计数时,我得到正确的计数(使用相同的确切查询)。
但是这里发生了一些事情。总是会添加一个新行,我不知道为什么。任何帮助表示赞赏。
<?php
require_once('connection.php');
$data = json_decode($_SERVER['HTTP_JSON'], true);
$name = $data['name'];
$profilePicture = $data['profilePicture'];
$googleId = $data['googleId'];
//First see if the user is already in the database
//$find_existing_query = "SELECT * FROM users WHERE googleId = '".$googleId."'";
$find_existing_query = "SELECT COUNT(*) FROM users WHERE name = $name";
$find_query_result = mysql_query($find_existing_query);
$find_query_rows = mysql_fetch_assoc($find_query_result);
$count = $find_query_rows['COUNT(*)'];
//Add user if there are no rows returned
if($count == 0)
{
$add_user_query = "INSERT INTO users (name, profilePicture, googleId) VALUES ('".$name."', '".$profilePicture."', '".$googleId."')";
mysql_query($add_user_query);
}
$qry = "SELECT * FROM users";
$result = mysql_query($qry);
$rows = array();
while($r = mysql_fetch_assoc($result)){
$rows[] = $r;
}
echo json_encode($rows);
mysql_close();
?>
答案 0 :(得分:3)
由于语法错误导致mysql_fetch_assoc()
返回false,而类型juggled等于零时,您的查询失败。
您忘记在查询中为字符串值添加引号。
$find_existing_query = "SELECT COUNT(*) FROM users WHERE name = $name";
应该是
$find_existing_query = "SELECT COUNT(*) FROM users WHERE name = '$name'";
答案 1 :(得分:1)
您忘记在查询中附加并添加单引号。我应该是这样的:
$find_existing_query = "SELECT COUNT(*) FROM users WHERE name = '".$name."'";