2014-10-03 96 views
-4

这是一个代码,从那个时候开始困扰我。我看了其他代码,但似乎没有任何工作适合我。我对此很陌生,所以请帮助我。警告:mysql_num_rows()期望参数1是资源

$sql= mysql_query("SELECT * FROM `users` WHERE `uname` = `$uname`"); 

    if(mysql_num_rows($sql) > 0){ 
     echo "Sorry that user already exists"; 
     exit(); 
     } 

,我得到的错误:

警告:mysql_num_rows()预计参数1是资源,布尔在../register.php给出线29

+1

**危险**:您正在使用[an **过时的**数据库API](http://stackoverflow.com/q/12859942/19068)并应使用[现代替换](http ://php.net/manual/en/mysqlinfo.api.choosing.php)。你可能也容易受[SQL注入攻击](http://bobby-tables.com/)的影响,一个现代的API会使它更容易[防御](http://stackoverflow.com/questions/60174/best-防止 - 注入 - 在PHP中)自己从。 – Quentin 2014-10-03 10:22:02

+1

对此的答案是[在PHP标签维基上](http://stackoverflow.com/tags/php/info) – Quentin 2014-10-03 10:23:06

+0

新的并不是找不到一个问题的借口。 – 2014-10-03 10:25:50

回答

3

你需要在WHERE条款中使用$uname的单引号,如'$uname',您可以使用反引号。

因此改变:

$sql= mysql_query("SELECT * FROM `users` WHERE `uname` = `$uname`") 

要:

$sql= mysql_query("SELECT * FROM `users` WHERE `uname` = '$uname'") 

了解更多关于 “标识” 上MySQL.com

+4

对于“为什么”,解释总是很好。 ;否则,OP将不会学到任何东西。 – 2014-10-03 10:20:57

+0

@ Fred-ii-同意谢谢 – 2014-10-03 10:23:10

+0

不客气。线索:“标识符”;) – 2014-10-03 10:23:48

相关问题