PHPとMySQLを使用する開発プロセス中、多くの初心者が問題に遭遇します。MySQL_FETCH_ASSOC ()を使用してクエリ結果を処理する場合、データが返されない場合、どのように判断する必要がありますか?この記事では、判断を正しく安全に行う方法を見つけて教えてください。
判断方法について話す前に、 mysql_fetch_assoc()の基本的な役割を理解する必要があります。これは、 mysql_query()によって返された結果セットからデータの行を取り出し、連想配列として返すPHP関数です。使用法は次のとおりです。
<code> $ result = mysql_query( "select * from estation estatus = 'Active'"); $ row = mysql_fetch_assoc($ result); </code>関数が呼び出されるたびに、結果セットのデータが取得されるまで次の行に戻ります。これ以上のデータがない場合、 falseを返します。
関数はデータがない場合にfalseを返すため、返品値がfalseかどうかを判断することにより、結果があるかどうかを直接確認できます。以下は一般的で正しい書き込み方法です。
<code> $ result = mysql_query( "select * from estation estatus = 'Active'"); if($ result && mysql_num_rows($ result)> 0){
while($ row = mysql_fetch_assoc($ result)){
echo $ row ['username']。 "<br>";
}
} それ以外 {
エコー「基準を満たすデータはありません。」;
}
</code>
ここでの判断は、2つのレベルに分かれています。
$ resultがfalseかどうかは、クエリが成功したかどうかを示します。
mysql_num_rows($ result)> 0は、返されたレコードラインがあるかどうかを判断するために使用されます。
一部の人々は怠zyになり、 mysql_fetch_assoc()の結果を直接判断したいと思うかもしれません。
<code> $ row = mysql_fetch_assoc($ result); if($ row === false){
エコー「データなし」;
} それ以外 {
//データがあります、プロセス$ row
}
</code>
これはいくつかの単純なクエリでは可能ですが、判断する唯一の方法として推奨されません。複数のデータを処理する必要がある(トラバーサルを使用)が必要な場合でも、最初にMySQL_NUM_ROWS()を使用してデータがあるかどうかを判断する必要があるためです。
全体として、最も安全で最も一般的な方法は、最初にクエリが成功したかどうかを判断し、次にmysql_num_rows()を使用して結果があるかどうかを判断し、最後にmysql_fetch_assoc()を使用してデータを取得することです。完全な例は次のとおりです。
<code> $ conn = mysql_connect( "localhost"、 "user"、 "password"); mysql_select_db( "mydb"、$ conn); mysql_set_charset( "utf8"、$ conn); $ sql = "select * from users from user where email '%@gitbox.net'";
$ result = mysql_query($ sql);
if($ result && mysql_num_rows($ result)> 0){
while($ row = mysql_fetch_assoc($ result)){
echo $ row ['email']。 "<br>";
}
} それ以外 {
エコー「関連するユーザーが見つかりません。」;
}
</code>
mysql_fetch_assoc()はfalseを返します。これは実際にはデータのない信号ですが、プログラムの堅牢性と明確さのために、 mysql_num_rows()で使用することをお勧めします。さらに、 MySQL_*シリーズ関数はPHPの新しいバージョンで放棄されており、データベース操作にMySQLIまたはPDOを使用することをお勧めします。それでも、古いプロジェクトを維持するには、古い機能の動作を理解することは依然として非常に重要です。
これらの判断方法を習得すると、より堅牢で信頼性の高いPHPデータ処理ロジックを記述できます。