我有一个PHP函数,它给出了以下错误消息:
警告:mysql_fetch_row()要求参数1为资源,布尔值在第10行的C:\ xampp \ htdocs \ includes \ stat.php中给出。
该功能完美运行并显示所有内容,因此我不知道为什么我会收到此警告。我一直在搞乱它一小时没有运气。
我的功能代码如下。
function getStat($stat,$name) {
include 'includes/config.php';
$conn = mysql_connect($dbhost,$dbuser,$dbpass)
or die ('Error connecting to mysql:');
mysql_select_db($dbname);
$query = sprintf("SELECT $stat FROM players WHERE username = '%s'",
mysql_real_escape_string($_SESSION['username']));
$result = mysql_query($query);
------>list($value) = mysql_fetch_row($result);<-------------------line throwing warning
return $value;
}
答案 0 :(得分:2)
这又是因为无论人们在哪里学习如何使用MYSQL都不会告诉你如何进行错误检查。
当调用mysql_query时,如果发生故障,则返回FALSE,或者mysql_fetch_row可以使用的对象。如果在将mysql_query交给mysql_fetch_row之前未能检查mysql_query的返回值,则会产生问题。
要进行错误检查,您应该执行以下操作:
$result = mysql_query("SELECT * FROM players");
if (!$result) {
// Something went wrong
die(mysql_error());
}
// If we got here, there was no error and we can fetch rows
$row = mysql_fetch_rows($result);
最重要的是:
阅读文档特别有用。您会注意到它告诉您使用mysql_函数是非常不明智的,您应该转换为mysqli_和PDO API。查看PHP文档,它也会向您显示我刚为您输入的内容! : - )
请参阅大红框! http://us1.php.net/manual/en/function.mysql-query.php
答案 1 :(得分:0)
Rottingham的解决方案是正确的。
另外值得一提的是,警告永远不会导致程序失败。 您可以通过在函数名前加上@来抑制它们,因此在您的情况下将是
$row = @mysql_fetch_rows($result);
但显然,解决导致问题的任何问题总是更好。