如何禁止“不是有效的MySQL结果资源”错误
我有一个简单的脚本来检查用户上传了多少文件:
$sql = "SELECT * from $username where file IS NOT NULL";
$result = mysql_query($sql);
$count=mysql_num_rows($result);
如果表$用户名没有任何行,其中文件不为空它将吐出:
“警告:mysql_num_rows():提供的参数不是有效的MySQL结果资源...”
我能做些什么来避免这种情况? 有没有简单的方法来简单地抑制这个错误消息显示? 还是一个简单的“if”语句,可以防止SQL查询首先发生?
你可以做这样的事情:
<?php
 $sql = "SELECT * from $username where file IS NOT NULL";
 $result = mysql_query($sql);
 if($result) 
 {
     $count=mysql_num_rows($result);
 }
 else 
 {
     $count = 0;
  }
或使用简写:
<?php 
 $count = ($result) ? mysql_num_rows($result) : 0;
注意:
就像你可以在其他评论中看到的一样,这只是对你的问题的回答,一次只处理一个问题。 $ username在这里的使用可能会非常棘手,特别是如果它是动态或用户生成的内容。 最好看一下与数据库交互方式的一些长期改进,但现在是解决方案;-)
PS。 如果你不想学习所有新的东西,也许是一个框架,像Codeigniter这样的东西可以帮助你。 使用它的活动记录类很容易,它本身也处理很多事情。
抑制错误是你想做的最后一件事。 你应该处理它们。
$sql = 'SELECT * FROM ' . mysql_real_escape_string($username) . ' WHERE `file` IS NOT NULL';
$result = mysql_query($sql);
if ($result !== false) {
    $count=mysql_num_rows($result);
} else {
    // An error occurred, handle it here.
}
另外,使用动态表名称会很恐怖。 不要这样做!
另外,您可能会对SQL注入敞开大门。 学习如何使用PDO准备的查询来避免此问题。
  以最简单的方式,你可以做mysql_query($sql) or die("invalid sql");  或者试一试。 
<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
if (!mysql_select_db('database_name')) {
    die('Could not select database: ' . mysql_error());
}
$result = mysql_query('SELECT name FROM work.employee');
if (!$result) {
    die('Could not query:' . mysql_error());
}
echo mysql_result($result, 2); // outputs third employee's name
mysql_close($link);
?>
我认为以上代码http://www.php.net/manual/en/function.mysql-result.php说明你需要什么。
  这里, if (!$result) {...}是关键字。 
上一篇: How to suppress "is not a valid MySQL result resource" errors
