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';
}

さらに、拡張機能は PHP 開発者によって非推奨とマークされているため、新しいコードに mysql_* 関数を使用しないでください。代わりにPDOまたはを使用してください。mysqli

于 2013-04-18T22:57:58.417 に答える