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

Mik*_*art 3 php mysql

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

我的PHP函数脚本昨晚工作正常,现在当我今天登录工作时,我得到了更多

"警告:mysql_result()期望参数1是资源,布尔值为".

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

?>
Run Code Online (Sandbox Code Playgroud)

Dav*_*dom 12

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

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

在您的情况下,查询失败.它失败的原因是因为你已经逃脱了你不需要的PHP字符串中的后退标记.

你的行看起来像这样:

$siteTitle = mysql_result(mysql_query("SELECT \`siteTitle\` FROM siteSettings"), 0);
Run Code Online (Sandbox Code Playgroud)

当它们应该只是这样:

$siteTitle = mysql_result(mysql_query("SELECT `siteTitle` FROM siteSettings"), 0);
Run Code Online (Sandbox Code Playgroud)

现在,一些附注:

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

例如:

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

例如

SELECT `siteTitle` FROM `siteSettings`
Run Code Online (Sandbox Code Playgroud)