如何更改!isset语句

时间:2013-04-18 22:53:52

标签: php mysql

我有一个包含以下代码的php页面。 MySQL查询工作正常,但我尝试添加一个无效的IF语句。 if(!isset($result))语句应该捕获表只包含FUTURE日期时间值的情况。我显然没有正确使用它,或者我应该使用其他东西 - 比如if(empty())

<?php

include 'quantitytest_config.php';

//connection to the database
$dbhandle = mysql_connect($hostname, $username, $password) 
  or die("Unable to connect to MySQL");

//select a database to work with
$selected = mysql_select_db("grace59_countdown",$dbhandle) 
  or die("Could not select countdown");

//execute the SQL query and return records
$result = mysql_query(
    "SELECT items 
    FROM cases 
    WHERE datetime<=NOW()
    Limit 1 ");

// check if there are only future dates in Database
if(!isset($result)){
    echo "9999";
} else {

//fetch tha data from the database
while ($row = mysql_fetch_array($result)) {
   echo "Quantity:".$row{'items'}."<br>";
}
}
//close the connection
mysql_close($dbhandle);
?>

3 个答案:

答案 0 :(得分:6)

您正在寻找:

if(mysql_num_rows($result) == 0){
   echo "9999";
} else {

文档:http://www.php.net/manual/en/function.mysql-num-rows.php

当您说$result = mysql_query时,您为$ result分配了一个值,所以即使没有找到任何行,该变量现在也已设置,因此isset()无效。

但你真的不应该使用mysql_ *函数。相反,请考虑预备语句。 PDO或mysqli。可在此处找到进一步阅读:http://www.php.net/manual/en/function.mysql-query.php(红色框)

答案 1 :(得分:1)

来自documentation

  

isset -   如果var存在并且其值不是NULL,则返回TRUE,否则返回FALSE。

但如果查询没有结果,$result将是一个有效的MySQL资源 - 事件。

来自docs

  

对于SELECT,SHOW,DESCRIBE,EXPLAIN和其他返回结果集的语句,mysql_query()会在成功时返回资源,或者在出错时返回FALSE。

     

对于其他类型的SQL语句,INSERT,UPDATE,DELETE,DROP等,mysql_query()成功时返回TRUE,错误时返回FALSE。

使用mysql_num_results()检测结果集是否为空:

if(mysql_num_rows($result) == 0) {
    echo 'no results';
}

进一步说明,您不应该将mysql_ *函数用于新代码,因为扩展已被PHP开发人员标记为已删除。请改用PDOmysqli

答案 2 :(得分:0)

不要忘记mysql_query可以返回false,所以:

if($result){
    if(mysql_num_rows($result) == 0){
        echo "9999";
    }
}