一尘不染

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

mysql

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

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

我不知道为什么这不起作用。我已经在线阅读了PHP手册,甚至还看到了使用和使用我所做的示例。谁能帮我这个忙吗?我一直在修正错误(一个错误,一个错误)(今天登录时,很多事情停止了工作),我的智慧到此为止。如果有帮助,我正在服务器上使用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;
}

?>

阅读 338

收藏
2020-05-17

共1个答案

一尘不染

问题是mysql_query()返回的是布尔值而不是结果资源。发生这种情况有两个原因:

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

您的情况查询失败。失败的原因是因为您逃脱了不需要的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
  • 您应该在查询中(最好是全部)引用所有标识符,也可以不引用。仅引用一些内容将使其更难阅读。

例如

SELECT `siteTitle` FROM `siteSettings`
2020-05-17