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

可能重复:
PHP:警告:sort()期望参数1是数组,给定的资源

我的PHP函数脚本昨天晚上工作正常,现在当我login到今天工作了一些,我越来越

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

我不知道为什么这不起作用。 我已经在线阅读了PHP手册,甚至还看到了我所做的一些例子, 任何人都可以请帮助我这个? 我一直在修复错误后(当我今天login时,很多事情停止工作),我在我的智慧结束在这里。 如果有帮助,我在我的服务器上使用Windows 7上的XAMPP。

代码:( 也可以通过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; } ?> 

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

  1. 您执行的查询返回成功/失败,而不是结果集(例如UPDATE
  2. 您的查询失败

在你的情况下,查询失败。 它失败的原因是因为你已经逃过了不需要的PHPstring中的后退标记。

你的行看起来像这样:

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

当他们应该只是这样的:

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

现在,一些边注:

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

例如:

 $result = mysql_query("SELECT somecol FROM sometable"); if (!$result) { // Handle error here } // Now process the result 
  • 你应该在你的查询中引用所有的标识符(或者全部)。 只引用一些使阅读变得更难。

例如

 SELECT `siteTitle` FROM `siteSettings`