如何禁止“不是有效的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) {...}是关键字。

链接地址: http://www.djcxy.com/p/69359.html

上一篇: How to suppress "is not a valid MySQL result resource" errors

下一篇: Is it possible to overload operators in PHP?