【问题标题】:php error message: Warning: mysql_num_rows() expects parameter 1 to be resource, boolean [duplicate]php 错误消息:警告:mysql_num_rows() 期望参数 1 是资源,布尔值 [重复]
【发布时间】:2012-11-08 21:31:23
【问题描述】:

可能重复:
PHP (MySQL) error : “Warning: mysql_num_rows() expects parameter 1 to be resource”

我试图让这个 AJAX 函数的 php 页面工作。

这是我尝试运行时的错误消息:

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /home/ftpbpan/public_html/ThornAJAX/info.php on line 10

第 10 行是:

**$num_rows = mysql_num_rows($query);**

<?php
$connect = mysql_connect("localhost","****","******") or die("didnot connect to database");

mysql_select_db("people"); 

if(strlen($_GET['user']) >0){
$name = $_GET['user'];
$query = mysql_query("select * from info where name='$name' limit 1");
$num_rows = mysql_num_rows($query);

if($num_rows == 1) {
  $row = mysql_fetch_assoc($query);

【问题讨论】:

  • 您检查过右侧的任何链接吗?
  • mysql_query 在成功时返回结果,在错误时返回 false。我会说你的查询有错误。 mysql_ 库也已弃用。
  • 请不要使用mysql_* 函数编写新代码。它们不再维护,社区已经开始deprecation process。看到 red box 了吗?相反,您应该了解prepared statements 并使用PDOMySQLi。如果你不能决定哪一个,this article 会帮助你。如果你选择 PDO,here is good tutorial
  • -1。错误消息之前应该有另一个错误,例如可怕的you have an error in your query。发布那个错误。
  • 在您的查询行中输入or die(mysql_error()) 以准确了解为什么它会向 $query 返回布尔值 false。然后去阅读sql injection attacks,如果你不修补漏洞,你的服务器就会被摧毁。

标签: php ajax


【解决方案1】:

如果您使用LIMIT 1,您不能假设将有 1 行或 0 行吗?因此,如果我是你并且我正在使用不推荐使用的方法与 MySQL 数据库交互,我会使用:

$query = mysql_query("SELECT * FROM info WHERE name='$name' LIMIT 1")or die(mysql_error());
if ($query && mysql_num_rows($query)) {
    // A result was found
    $row = mysql_fetch_array($query);
} else {
    //There were no results found
}

再一次,你可能应该读到这个:

Please, don't use mysql_* functions in new code。它们不再维护,deprecation process 已开始使用。看到red box?改为了解 prepared statements,并使用 PDOMySQLi - this article 将帮助您决定哪个。如果你选择 PDO,here is a good tutorial

【讨论】:

  • 感谢您的所有帮助...对不起,我完全是新手。这是我正在处理的页面:bpanzullo.com/ThornAJAX/Ajaxindex.html 我只将名称 Paul 放入数据库进行测试 这个帮助我缩小了错误范围,我尝试了 mysqli 而不是 msql,但产生了更多错误,我得到了no users name Paul in the database error, Paul 是我在数据库中唯一一个用来测试这个的人。数据库称为 people,我正在使用的表(有很多)称为 peopleTwo,这是几乎可以工作的代码:
  • 0){ $name = $_GET['user']; $query = mysql_query("select * from peopleTwo where name='$name' limit 1"); if (false === $query) { die(mysql_error()); } $num_rows = mysql_num_rows($query); if($num_rows == 1) { $row = mysql_fetch_assoc($query);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多