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

PHP函数不断抛出警告,但没有失败,php,function,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,$db

我有一个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;      
}
函数getStat($stat,$name){ 包括“includes/config.php”; $conn=mysql\u connect($dbhost、$dbuser、$dbpass) 或死亡('连接到mysql时出错:'); mysql\u select\u db($dbname); $query=sprintf(“从用户名为“%s”的玩家中选择$stat, mysql_real_escape_字符串($_SESSION['username']); $result=mysql\u query($query);
------>list($value)=mysql_fetch_row($result);这也是因为无论人们在哪里学习如何使用mysql,都不会告诉你如何检查错误

调用mysql\u query时,如果出现故障,则返回FALSE,或者mysql\u fetch\u row可以使用的对象。如果在将mysql\u query的返回值交给mysql\u fetch\u row之前没有检查它,则会产生问题

要进行错误检查,应执行以下操作:

$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_uu函数是非常不明智的,您应该转换为mysqli_uuu和PDO API。请参阅PHP文档,它还将向您展示我刚才为您键入的内容!:-)


查看大红色框!罗丁汉的解决方案是正确的

此外,值得一提的是,警告不会导致程序失败。 您可以通过在函数名前加一个@来抑制它们,因此在您的例子中

$row = @mysql_fetch_rows($result);

但显然,解决问题的原因总是更好的。

为什么不检查错误?这失败了:
$result=mysql\u query($query);
,可能是因为查询中有语法错误。检查
mysql\u error()
。不确定当您的查询失败时,它如何才能
显示所有内容并正常工作。它不能。您可能多次调用您的函数。旁注:不要使用
mysql_*()
函数。它们已被弃用并将被删除。请使用
mysqli_*()
PDO
。例如,我看不出您如何/为什么将PHP语言构造与查询结合使用。“除非”,有些事情我还不知道。停止阅读过时的教程和如何使用。从那里开始,然后继续。谢谢你的赞誉,所以我不想压扁你,但使用@是我们有这么多问题的原因。功能的糟糕实现可能不应该进入语言。沉默错误意味着he永远不会知道是否有错误,也无法追踪错误的来源