-3

我知道这是非常常见的问题。我有两个托管 A 和 B 以及一个 mysql 基地。在托管 A 站点上工作,但在托管 B 上的相同网页(我将文件从 A 复制到 B)不能完美运行。主机、登录名和密码都可以,因为我看到新闻等。但是当我尝试登录我的管理面板时,我看到:

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /home/dmcmetal/domains/mydomain.com/public_html/config.php on line 31

我添加到我的 config.php 文件 mysql_error(); 现在我看到了:

 Something is wrong in your syntax obok '=='1' LIMIT 1' w linii 1

这是 config.php 文件的一部分:

function get_user_data($id=-1) {
if($id==-1) {
    $id=$_SESSION['id'];
}
$result=  mysql_query("SELECT * FROM `users` WHERE `id`=='{$id}' LIMIT 1");
if($result==FALSE)
    die(mysql_error());
if(mysql_num_rows($result)==0) { // 31 line
    return false;
}
return mysql_fetch_assoc($result);

}

谁能知道为什么它适用于托管 A 而不适用于托管 B ?

4

3 回答 3

1

您的查询中存在语法错误,当 mysql 语法需要单个等号时,您使用的是双等号。这是导致错误的原因,因为没有行数。所以请改为

$result=  mysql_query("SELECT * FROM `users` WHERE `id` = '{$id}' LIMIT 1");

然后我希望您记住这些mysql_*功能已被弃用,因此我建议您切换到mysqliPDO

于 2013-05-13T08:23:08.720 回答
0

你得到的错误是因为你的查询在语法上不正确..所以mysql_query()是retruring false..

所以被转移到的参数mysql_num_rows()false

请更换

$result=  mysql_query("SELECT * FROM `users` WHERE `id` == '{$id}' LIMIT 1");

$result=  mysql_query("SELECT * FROM `users` WHERE `id` = '{$id}' LIMIT 1");

注意:我建议您切换到 mysqli_* 或 PDO,因为 mysql_ 已贬值

参见PDOmysqli

您还可以查看准备好的语句

于 2013-05-13T08:31:25.513 回答
0

id ='{id}'

代替

id =='{id}'

您正在做的是检查 id 的相等性,这是不正确的语法,因为 id 是列名。

于 2013-05-13T08:21:57.383 回答