我知道这是非常常见的问题。我有两个托管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?
答案 0 :(得分:1)
您的查询中存在语法错误,当mysql语法需要单个时,您使用的是double equals。这导致错误,因为没有行数。所以请转到
$result= mysql_query("SELECT * FROM `users` WHERE `id` = '{$id}' LIMIT 1");
答案 1 :(得分:0)
id ='{id}'
而不是
id =='{id}'
你正在做的是检查id的相等性,这是不正确的语法,因为id是列名。
答案 2 :(得分:0)
您收到的错误是因为您的查询在语法上不正确..所以mysql_query()
正在退回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");
注意:我建议您在mysql_折旧时切换到mysqli_ *或PDO
您还可以查看prepared statements。