警告:mysql_result()期望参数1是资源,给定布尔值

时间:2012-07-10 22:43:46

标签: php mysql

  

可能重复:
  PHP: Warning: sort() expects parameter 1 to be array, resource given

我的PHP函数脚本昨晚工作正常,现在当我今天登录工作时,我正在使用

“警告:mysql_result()期望参数1为资源,布尔值为”。

我 - 不知道为什么这不起作用。我已经在线阅读了PHP手册,我甚至看到过我所做的工作和使用的例子。有人可以帮我解决这个问题吗?我一直在修复bug之后的错误(当我今天登录时很多东西都停止了工作)并且我在这里结束了我的智慧。如果有帮助,我在Windows 7上使用XAMPP作为我的服务器。

代码:(also available via Pastebin)

<?php

function dbConnect() {
$dbserver="127.0.0.1";
$dbuser="Mike";
$dbpassword="mike";
$dbname="devsite";

$con = mysql_connect($dbserver, $dbuser, $dbpassword);
mysql_select_db($dbname, $con);
}

function getSiteTitle() {


$siteTitle = mysql_result(mysql_query("SELECT \`siteTitle\` FROM siteSettings"), 0);
return $siteTitle;
}

function getSiteHeader(){

$siteHeader = mysql_result(mysql_query("SELECT \`siteHeader\` FROM siteSettings"), 0);
return $siteHeader;
}

function getBodyContent() {


$bodyContent = mysql_result(mysql_query("SELECT \`bodyContent\` FROM siteSettings"), 0);
return $bodyContent;
}

?>

1 个答案:

答案 0 :(得分:12)

问题是mysql_query()返回一个布尔值而不是结果资源。这可能有两个原因:

  1. 您执行了返回成功/失败而不是结果集(例如UPDATE
  2. 的查询
  3. 您的查询失败
  4. 在您的情况下,查询失败。它失败的原因是因为你已经转义了你不需要的PHP字符串中的后退标记。

    你的行看起来像这样:

    $siteTitle = mysql_result(mysql_query("SELECT \`siteTitle\` FROM siteSettings"), 0);
    

    当他们应该这样做时:

    $siteTitle = mysql_result(mysql_query("SELECT `siteTitle` FROM siteSettings"), 0);
    

    现在,有些人注意到:

    • 不要编写使用mysql_*函数的新代码。它们已被弃用,最终将从PHP中删除。请改用MySQLiPDO(我个人推荐PDO,YMMV)
    • 以这种方式嵌套数据库函数不是编写代码的特别好方法。在每次函数调用后明确检查错误要好得多。

    例如:

    $result = mysql_query("SELECT somecol FROM sometable");
    if (!$result) {
      // Handle error here
    }
    // Now process the result
    
    • 您应该在查询中引用所有标识符,或者不引用任何标识符(最好是全部)。仅引用某些内容会使其难以阅读。

    E.g。

    SELECT `siteTitle` FROM `siteSettings`