php - 给出警告 : mysql_result() expects parameter 1 to be resource, bool 值

标签 php mysql

我的 PHP 函数脚本昨晚运行良好,现在当我今天登录并进一步处理它时,我得到了

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

我不知道为什么这不起作用。我已经在线阅读了 PHP 手册,甚至还看到了我所做的事情被使用和工作的示例。有人可以帮我解决这个问题吗?我一直在修复一个又一个的错误(当我今天登录时,很多事情都停止工作了),而我在这里束手无策。如果有帮助,我将在 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;
}

?>

最佳答案

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

  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`

关于php - 给出警告 : mysql_result() expects parameter 1 to be resource, bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28693851/

相关文章:

mysql - SQL on UPDATE 将旧数据保存到另一个表中

php - 如果达到 maxlength,则删除 SQL 行中的最后一个单词? (PHP)

PHP-FPM + Laravel + Nginx + Ubuntu 权限

Mysql 按两列排序,主要的和次要的

php - Mysql表字段名

mysql - GROUP BY WITH ROLLUP 查询的最后一行未生成 NULL

php - fopen 创建文件,但 fwrite 不写入任何数据并返回 0

php - 在不同的 PHP 页面中使用相同的 MySQL 连接

PHP 防止创建未在类中定义的属性

mysql查询和性能