我的 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 值而不是结果资源。发生这种情况的原因有两个:
- 您执行的查询返回成功/失败而不是结果集(例如
UPDATE
) - 您的查询失败
在您的情况下,查询失败。失败的原因是您在 PHP 字符串中转义了不需要的反引号。
你的线条看起来像这样:
$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`
关于php - 给出警告 : mysql_result() expects parameter 1 to be resource, bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28693851/