如何抑制"不是一个有效的MySQL结果资源"错误

use*_*680 1 php mysql sql error-suppression suppress-warnings

我有一个简单的脚本来检查用户上传了多少文件:

$sql = "SELECT * from $username where file IS NOT NULL";
$result = mysql_query($sql);
$count=mysql_num_rows($result);
Run Code Online (Sandbox Code Playgroud)

如果表$ username没有任何文件不为null的行,则会吐出:

"警告:mysql_num_rows():提供的参数不是......中的有效MySQL结果资源"

我该怎么做才能避免这种情况?是否有一种简单的方法可以简单地禁止显示此错误消息?或者一个简单的"if"语句,可以阻止SQL查询首先发生?

Rob*_*ert 6

你可以这样做:

<?php
 $sql = "SELECT * from $username where file IS NOT NULL";
 $result = mysql_query($sql);
 if($result) 
 {
     $count=mysql_num_rows($result);
 }
 else 
 {
     $count = 0;
  }
Run Code Online (Sandbox Code Playgroud)

或使用速记:

<?php 
 $count = ($result) ? mysql_num_rows($result) : 0;
Run Code Online (Sandbox Code Playgroud)

注意:

就像你在其他评论中看到的那样,这只是你问题的答案,一次解决一个问题.在这里使用$ username可能很棘手,特别是如果它是动态或用户生成的内容.最好看看你与数据库交互方式的一些长期改进,但现在是修复;-)

PS.如果你不想学习所有新东西,也许是一个框架,像Codeigniter这样的东西可以帮助你.使用它的活动记录类很容易,它本身可以处理很多事情.