PHP函数不断发出警告,但没有失败

时间:2014-01-11 01:48:24

标签: php function

我有一个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;      
}

2 个答案:

答案 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);

但显然,解决导致问题的任何问题总是更好。