错误:警告:mysql_num_rows()期望参数1是资源,布尔给出C:\ xampp \ htdocs \ … \ … php在线19

我一直使用mysql_num_rows()接收一个错误信息,你能帮我弄清楚我的代码出了什么问题吗?

这是我的代码:

 <?php //check if the user press submit if (isset($_POST['submit'] )) { $customer = preg_replace('#[^A-Za-z0-9]#i', '', $_POST["username"]); // filter everything but numbers and letters $password = preg_replace('#[^A-Za-z0-9]#i', '', $_POST["password"]); // filter everything but numbers and letters $sql = mysql_query("SELECT id FROM members WHERE username='$customer' AND password='$password' LIMIT 1"); // query the person // ------- MAKE SURE PERSON EXISTS IN DATABASE --------- $existCount = mysql_num_rows($sql); // count the row nums if ($existCount == 1) { // evaluate the count while($row = mysql_fetch_array($sql)){ $id = $row["id"]; } $_SESSION["id"] = $id; $_SESSION["customer"] = $customer; $_SESSION["password"] = $password; header("location: index.php"); exit(); } else { echo 'That information is incorrect, try again <a href="customer_login.php">Click Here</a>'; exit(); } } ?> 

我已经尝试过mysql_errno() ,你build议..和它回声1146

当我寻找那个错误时,就是这样说的

 1146: Table 'kossu.nonexistenttable' doesn't exist 

但我不知道这是什么意思…请帮忙。

可能是mysql_query()失败了。 在这种情况下,它返回false 。 使用mysql_error()来查找,会发生什么。

当出现错误时, mysql_query()返回false而不是资源对象。 在将它传递给mysql_num_rows()之前,请检查mysql_query()的返回值。

从文档 :

返回值

对于SELECT,SHOW,DESCRIBE,EXPLAIN和其他返回结果集的语句,mysql_query()返回成功的资源,错误时返回FALSE。

所以,你有一个错误。 使用mysql_error()来找出什么。

mysql_query()失败。 它返回false 。要查看错误使用mysql_error()

有可能你没有select正确的数据库。 我之前遇到过这样的问题,错误是我select的数据库。

当MySQL查询执行时,预计会返回查询结果。 如果查询未成功执行,则返回False 。 看来你的查询失败,所以它返回False 。 当您尝试使用mysql_num_rows()对失败的查询进行计数时,它肯定会返回错误。 您的查询中可能有错误。 请检查。

原因可能是SQL查询使用不正确的数据库。 使用完全限定的表名,即databaseName.tableName

在你的情况下:

 $sql = mysql_query("SELECT id FROM DBName.members WHERE username='$customer' AND password='$password' LIMIT 1"); 

其中“DBName”是您的数据库名称。