3

我有一个带有以下代码的 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);
?>
4

3 回答 3

6

您正在寻找:

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

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

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

但是你真的不应该使用 mysql_* 函数。而是照顾准备好的语句。PDO 或 mysqli。进一步阅读可以在这里找到:http ://www.php.net/manual/en/function.mysql-query.php (红框)

于 2013-04-18T22:55:23.290 回答
1

文档中:

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

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

文档

对于 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代替。

于 2013-04-18T22:57:58.417 回答
0

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

if($result){
    if(mysql_num_rows($result) == 0){
        echo "9999";
    }
}
于 2013-04-18T23:08:04.733 回答