PHP报价问题

时间:2013-05-09 10:28:53

标签: php sql syntax

我有一个名为user的文本字段和一个提交按钮,它显示一个Json字符串,其中包含数据库中具有该id的用户的详细信息。我有以下代码:

$UserID = mysql_real_escape_string($_POST['User']);

$UserCoords_Query  = "Select Accuracy, Longitude, Latitude, Timestamp 
                      FROM UserDetails
                      WHERE UserId =".$UserID;

$UserCoords_result = mysql_query($UserCoords_Query);

if (mysql_num_rows($UserCoords_result) == 0) {
    echo "There are no users with an id of ". $UserID;
}

但我收到的错误是:

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /home/roseanne/public_html/display_Coords.php on line 29.

我最近将数据库中的userID类型从int切换为text。它作为一个int工作但不是因为改变。任何人都可以看到报价问题吗?

3 个答案:

答案 0 :(得分:0)

Timestampmysql中的保留字,在其周围使用`

$UserCoords_Query  = "Select `Accuracy`, `Longitude`, `Latitude`, `Timestamp`
                  FROM UserDetails
                  WHERE UserId = '".$UserID."'";

答案 1 :(得分:0)

mysql_query失败时返回false,因此您必须检查它。在您的情况下,它返回false - 您的查询失败,但您仍然将此false值传递给函数mysql_num_rows,这会引发错误。

此外,您应该使用mysqli_*,因为mysql_*已被弃用。

$UserID = mysql_real_escape_string($_POST['User']);

$UserCoords_Query  = "Select `Accuracy`, `Longitude`, `Latitude`, `Timestamp` 
                      FROM UserDetails
                      WHERE UserId =".$UserID;

$UserCoords_result = mysql_query($UserCoords_Query);

if ($UserCoords_result && mysql_num_rows($UserCoords_result) >= 1) {
  //Fetch results
} else {
  echo "There are no users with an id of ". $UserID;
}

答案 2 :(得分:0)

$UserCoords_result未被设置为函数mysql_num_rows()的有效资源。这可能是由于mysql_query试图在没有您首先创建与数据库的连接的情况下运行。我需要查看更多代码才能确定。

此外,在您开发此内容时,我建议您转移到mysqli或DBO,因为自PHP5.5起,mysql_函数已被折旧

:)