2013-05-13 55 views
-3

我知道这是非常频繁的问题。我有两个托管A和B以及一个MySQL基础。在托管一个网站的作品,但同一个网页(我从A复制文件到B)托管B不能正常工作。主机,登录名和密码日期基础是好的,因为我看到新闻等等。但是当我尝试登录到我的管理面板,我看到:mysql_num_rows()期望参数1是资源,布尔在/ home/domain/public_html/config.php在线31给出

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); 

}

任何人都可以有想法,为什么它可以在托管和不工作的托管B?

+1

在你的查询中'=='应该是'='。 **注意:** [**请勿在新代码**中使用'mysql_ *'函数](http://bit.ly/phpmsql)。他们不再被维护[并被正式弃用](https://wiki.php.net/rfc/mysql_deprecation)。看到[**红框**](http://j.mp/Te9zIL)?学习[*准备的语句*](http://j.mp/T9hLWi),并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [这篇文章](http://j.mp/QEx8IB)将帮助你决定哪个。如果你选择PDO,[这里是一个很好的教程](http://j.mp/PoWehJ)。 – Rikesh 2013-05-13 08:21:40

+3

'mysql_num_rows'错误不是您的主要错误,您的错误是SQL语法错误。你应该把它当作主要问题,特别是在标题中。 – deceze 2013-05-13 08:23:21

回答

1

在您的查询中有一个语法错误,您在使用double等于mysql语法需要单个语法时。这是由于没有行数导致错误。所以,请换

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

那么我想你要记住,mysql_*功能已被弃用,所以我会建议你切换到mysqliPDO

0

id ='{id}'

代替

id =='{id}'

你在做什么是检查ID的平等是不正确的语法为ID是列名。

0

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

这样被transeferred到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

你也可以看看prepared statements

相关问题