SQL INSERT语句正在执行时不应该执行

时间:2015-02-03 00:27:25

标签: php android mysql sql

所以我的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();

?>

2 个答案:

答案 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."'";