【问题标题】:PHP: mysql query gives a booleanPHP:mysql查询给出一个布尔值
【发布时间】:2012-04-10 21:51:07
【问题描述】:
<?php
class Page {
    function getPage($urlOfPage){
        $result = mysql_query('SELECT category, title FROM rs-planet WHERE url = "'.  mysql_real_escape_string($urlOfPage));
        if(mysql_num_rows($result) === 0){
            header('HTTP/1.0 404 Not Found');
            exit;
        }
        else{
            return $page[] = mysql_fetch_array($result);
        }
    }
}

?>

我有这个错误:

警告:mysql_num_rows() 期望参数 1 是资源,布尔值 在第 6 行的 C:\xampp\htdocs\rs-planet\classes\page.php 中给出

警告:mysql_fetch_array() 期望参数 1 是资源, 第 11 行 C:\xampp\htdocs\rs-planet\classes\page.php 中给出的布尔值 而且我没有看到问题...

如果我做 var_dump @ $result 我得到一个布尔值。 (如果它是在 @ db 成立的,它给我真,如果不是,它给我假。)

PS。抱歉我的英语不好,我的主要语言是荷兰语。

编辑: var_dump(mysql_error) =

string(152) "您的 SQL 语法有错误;请查看手册 对应于您的 MySQL 服务器版本以获得正确的语法 在第 1 行的“索引”附近使用

【问题讨论】:

  • SQL 查询中的 url 字符串值没有右引号......人们什么时候才能学会调试他们的 sql 查询,即使他们不能被说服进入 21 世纪并使用准备好的语句
  • 是的。准备好的语句是来自 SQL 之神的礼物 - 使用它们。 :)
  • 使用鼓励占位符的PDO 是一个非常好的主意。

标签: php mysql


【解决方案1】:

mysql_query 如果无法执行查询(即语法错误),则返回 false。尝试用反引号包围rs-planet

$result = mysql_query('SELECT category, title FROM `rs-planet` WHERE url = "'.  mysql_real_escape_string($urlOfPage) . '"');

我认为表名中的 - 搞砸了语法。

编辑:此外,PDO 使调试这些问题变得更加容易,因为您不需要使用mysql_error() 来获取错误消息 - 它包含在 PDO 抛出的异常中。 http://php.net/manual/en/book.pdo.php

第二次编辑:实际上问题可能是缺少报价。修复了我的代码,但请查看其他答案...

【讨论】:

  • 查询语法不正确,缺少右引号。
  • @citizenen 实际上缺少报价可能是问题所在,如其他答案中所述。
  • @Robin 对不起,在函数调用之外有 concat;现已修复。
【解决方案2】:

mysql_query 出错时返回 false

您有 WHERE url=",但 url 字符串后没有右引号。

【讨论】:

    【解决方案3】:

    mysql_query 出错时返回 FALSE。您的错误是您没有关闭查询中的报价。试试这个:

            $result = mysql_query('SELECT category, title FROM rs-planet WHERE url = "'.  mysql_real_escape_string($urlOfPage).'"');
    

    【讨论】:

    • 另外,试试return $page 而不是return $page[]。前者从mysql_fetch_array返回数组,后者从mysql_fetch_array返回$page数组第一个元素中的数组。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-07
    • 1970-01-01
    • 2011-09-21
    • 1970-01-01
    • 2021-09-21
    • 2015-12-15
    • 2019-04-27
    相关资源
    最近更新 更多