mysql_num_rows()希望参数1是资源,布尔值在第31行的/home/domain/public_html/config.php中给出
我知道这是一个非常常见的问题。我有两个主机A和B,还有一个mysql数据库。在托管一个站点时可以工作,但在托管B时相同的网页(我将文件从A复制到B)不能完美工作。主机、登录名和日期库密码都可以,因为我看到了新闻等。但当我尝试登录到我的管理面板时,我看到:mysql_num_rows()希望参数1是资源,布尔值在第31行的/home/domain/public_html/config.php中给出,php,mysql,Php,Mysql,我知道这是一个非常常见的问题。我有两个主机A和B,还有一个mysql数据库。在托管一个站点时可以工作,但在托管B时相同的网页(我将文件从A复制到B)不能完美工作。主机、登录名和日期库密码都可以,因为我看到了新闻等。但当我尝试登录到我的管理面板时,我看到: Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /home/dmcmetal/domains/mydomain.com/public_
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
我将mysql_error()添加到config.php文件中;现在我明白了:
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时不起作用吗?
id='{id}'
而不是
id=='{id}'
您要做的是检查id的相等性,这是不正确的语法,因为id是一个列名。在您的查询中有一个语法错误,当mysql语法需要一个相等时,您使用了双相等。这会导致错误,因为没有行数。所以请换成
$result= mysql_query("SELECT * FROM `users` WHERE `id` = '{$id}' LIMIT 1");
然后我希望您记住,
mysql.*
函数已被弃用,因此我建议您切换到或您得到的错误是因为您的查询语法不正确。。因此,mysql\u query()
正在重新计算false
因此,传递到mysql\u num\u rows()
的参数是false
请换
$result= mysql_query("SELECT * FROM `users` WHERE `id` == '{$id}' LIMIT 1");
到
注意:我建议您切换到mysqli_*或PDO,因为mysqli_*已贬值
查看和
您还可以查看。
==
在您的查询中应该是=
。注:。它们不再得到维护。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果选择PDO,mysql_num_rows
错误不是您的主要错误,您的错误是SQL语法错误。你应该把它作为首要问题,尤其是在标题中。
$result= mysql_query("SELECT * FROM `users` WHERE `id` = '{$id}' LIMIT 1");