0

つまり、たとえば、SQL テーブルで何かを検索し、0 / 何も返さない場合、それはnullまたはですか、それとも空の""になりますか?

私はphpに戻り、次のようにdbをループしようとしています:

擬似コード:

while($row = mysqli_fetch_array($var here that has the query to the db and connection)){
      echo $row[//something pulled from table to be read back]
}

しかし、検索クエリが結果を返さなかった、または$row何らかの理由でデータベースで検索された値が存在しないために、それが何にも等しくなかったとしましょう。

行の空さを確認するにはどうすればよいですか?

検索されたアイテムがデータベースに存在しない場合、$rows値は正確には何になりますか? null/空/または空の文字列か何か?

rowの値に応じて、[isset / !isset]または[empty / !empty]をテストしますか? または、空をテストして (疑似) を実行する唯一の方法はありますか?$row$x =mysqli_num_rows(var here) / if ($x == 0 ) //do something

4

4 に答える 4

2

mysqli_fetch_array何も返さなかった場合、戻り値はNULL

この行は、レコード セット内の次のwhile($row = mysqli_fetch_array使用可能なレコードを返すことになっているため、クエリが一致する結果を返さなかった場合、その行はまったく実行されません。echo $row['something']

たとえばfield1、フェッチしている複数のフィールドがあり、値がないfield2と仮定すると、そのフィールドに対して返されるのは、MySQL (または使用している DB) でのそのフィールドのデフォルト値です。field2ただし、注意すべき点は、 と として正しく定義された 2 つのキーがまだあることです$row$row['field1']$row['field2']

$row['field2']値があるかどうかを確認したい場合は、 を使用して確認できますempty($row['field2'])

"", 0, NULL, FALSE, array()すべてが考慮empty()されるため、この関数を使用してフィールドに有効な値があるかどうかを安全に判断できるはずです。ただし、0 が有効な値である可能性がある場合 (たとえば、no_of_days をクエリしていて、先月欠席した人がいて、そのうちの何人かは満席である場合)、フィールドの値を明示的に確認する必要があり、empty() に依存することはできません。 .

于 2012-08-30T01:43:54.557 に答える
2

mysql_num_rows を使用して結果があるかどうかを確認できます。その行に項目が存在する場合、検索した項目に応じて、行に 1 つ以上または TRUE が表示されます。クエリを実行したときにデータベースに何も存在しない場合は、mysql_now_rows が 0/NULL を表示することを意味します。

あなたは好きにすることができます

$query = mysql_query("YOUR QUERY HERE");
$numrow = mysql_num_rows($query);

if ($numrow == 0)
{
ECHO "No result found.";
}
于 2012-08-30T01:45:03.150 に答える
0

何もないときは $row == false これが while ループの正しいテストです!

于 2012-08-30T01:41:01.697 に答える
0

mysqli_num_rowsクエリによって見つかった結果の数を取得するために使用できます。

$query = 'SELECT `blah`';
$result = mysqli_query($query);
if(mysqli_num_rows($result) > 0) {
    // do stuff here if any rows are found
} else {
    // do stuff here if NO rows are found
}
于 2012-08-30T01:43:56.057 に答える