2011-12-07 11 views
2

SQLクエリから返された値が空であるかどうかを確認するにはどうすればよいでしょうか?私はif(空($ var))を使ってみましたが、それはどちらもうまくいきませんでした。私のコードHERESにSQL/PHPクエリから返された値が空であるかどうかを確認するにはどうすればよいですか?

PHPコード:

 while($row = mysql_fetch_array($Result)) 
     { 
      if(count($row) == 0) 
      { 
       .... 
      } 
     } 

どのように私は$行が空であるかどうかをチェックしますか?

+0

"空"とはどういう意味ですか? – VolkerK

+0

mysql拡張機能は古くなっており、廃止予定です。代わりに、新しいコードではmysqliまたはPDOを使用する必要があり、どちらも準備済みの文などの重要な利点があります。 – outis

答えて

8

これは正しい方法です。返された結果の行数を見つけることで結果が空であるかどうかを確認できます。これにはSQLの関数mysql_num_rowsがあります。ここではそれを使用する方法がある:彼らは空されていない場合

if (mysql_num_rows($Result) == 0) { 
    //results are empty, do something here 
} else { 
    while($admin_row = mysql_fetch_array($Result)) { 
     //processing when you have some data 
} 
+0

==の代わりに===を使用してください。 – Mgamerz

1
if (mysql_num_rows($Result) == 0) { 
    //error here 
} else { 
    //loop here 
} 

はあなたのエラーのための場所と結果と仕事をする場所を提供します。

1

最も簡単な方法はmysql_num_rows()です。

$cnt = mysql_num_rows($Result); 
if (0===$cnt) { 
    echo 'no records'; 
} 
else { 
    while(false!=($row=mysql_fetch_array($Result))) { 
     // ... 
    } 
} 

しかし、この機能は、これまでクライアントへのMySQLサーバから転送されたレコードの数を返すことに注意してください。それは必ずしも総レコード数ではありません。限り、mysql_query()を使用している限り、それは問題ありません。しかし、あなたがmysql_fetch_xyz()を呼び出す前にレコードが転送されていないので、あなたはmysql_unbuffered_query()を使用したいかもしれない大きな結果セットを作成し、mysql_num_rows()を目的に使用することはできません。

しかし、その代わりに、あなたは今、あなたはカウンターのように余分な変数を持って

$cnt = 0; 
while(false!=($row=mysql_fetch_array($Result))) { 
    $cnt += 1; 
    // ... 
} 
if (0===$cnt) { 
    echo 'no records'; 
} 

のようなものを使用することができます。あなたは(ライン... $ xに=フェッチ)ことを避け、代わりにあなたが余分な変数を持っていないが、いくつかのコードの重複は、そのアプローチで

$row = mysql_fetch_array($Result); 
if (!$row) { 
    echo 'no records'; 
} 
else { 
    do { 
     // ... 
    } while(false!=($row=mysql_fetch_array($Result))) ; 
} 

のようなものを使用することをお勧めします。
...あなたの選択を;-)

関連する問題