2012-03-01 51 views
1

我想检查我的查询是否为空(没有行)。什么是最好的方法来攻击它?在PHP中的Mysql空查询 - 我得到什么?资源ID?

而且我会得到什么在下面的“$结果”和“$行”(这是怎么了旨在解决这个 - if($result)也许使用if($row)意味着它不是空的什么更好的建议

? 。

感谢

 $result = mysql_query("SELECT * FROM table1 WHERE column1= '$var1' 
           AND column2 IN ('no','nein','nope') 
           AND timestamp BETWEEN '$date' AND NOW()"); 
     $row = mysql_fetch_assoc($result);  

回答

2

测试这个。

$result = mysql_query("SELECT * FROM table1 WHERE column1= '$var1' 
          AND column2 IN ('no','nein','nope') 
          AND timestamp BETWEEN '$date' AND NOW()"); 
$row = mysql_fetch_array($result); 

if (mysql_num_rows($result) > 0) { 
    echo $row['column name']; 
} 
2

您可以使用mysql_num_rows($result)获得的行数,或者你可以看到,如果$row === false;

$row将记录或的第一行如果查询没有结果。 $result如果查询成功为false(如果它有错误)将成为记录集资源。

如果您在项目的早期阶段和/或刚刚学习,请考虑切换到新的DB接口PDO。至少使用Mysqli ...你现在使用的mysql扩展有点过时了。它的工作原理,有时甚至在传统应用程序/站点中都需要它,但如果可能的话应该避免。

+0

哪个扩展你说的是过时的?我不确定我明白。 – 2012-03-04 21:57:02

+0

['ext \ mysql'](http://php.net/manual/en/book.mysql.php)已过时,这是您在初始文章中使用的。 [这可能会帮助你理解](http://forge.mysql.com/wiki/Which_PHP_Driver_for_MySQL_should_I_use)。应该注意的是,该文档在其推荐中将'mysqli'放在'PDO'上,因为'mysqli'支持PDO不支持的一些MySQL特有功能。然而,我更重视统一的API PDO提供跨不同的数据库和编写DB不可知的代码。我也发现PDO API更容易处理。 – prodigitalson 2012-03-04 22:36:00

1

使用mysql_num_rows来获得行数。

如果您的查询没有失败,$ result的结果将始终为Resource类型。