0

これは私が考えている簡単なシナリオです。PHP から MySQL データベースで実行されるクエリがあります。クエリからデータが返されたかどうかを確認したいと思います。ただし、そのチェックを実行するために、返されたデータの行の 1 つを引き出します。

この例とそのコメントを見てください。

$booksGrabber = ("SELECT * FROM table");

if (!$booksGrabber) {
  //Query failed, perhaps a syntax error
  exit;
}

if (!mysql_result($booksGrabber, 0)) {
  //No data was returned :(
  exit;
}

while ($book = mysql_fetch_assoc($booksGrabber)) {
  //mysql_result() stole the first row of returned data
  //So if I was expecting the loop to display 4 results,
  //I only get 3...
}

2 つのクエリ (1 つはチェック用、もう 1 つはすべてのデータを表示するため) を実行したり、行の 1 つを盗んだりせずに、データベースからデータが返されたかどうかを確認するにはどうすればよいですか?

4

2 に答える 2

4

を使用しmysql_num_rowsます。見た目通りシンプルでした。

編集:もっと複雑にしたい場合は、追加してください。mysql_data_seek($booksGrabber,0)

于 2012-06-19T20:59:30.213 に答える
0

簡単:クエリを実行するmysql_query()関数は、エラー時に false を返し、カウントに mysql_num_rows() を使用できます。したがって、次のようなことができます:

$result = mysql_query('SELECT * FROM table');
if (!$result) {
    print('Invalid query: ' . mysql_error());
} elseif (mysql_num_rows() == 0) {
    print("no results");
} else {
   // You can use safely data from the query :)
}
于 2012-06-19T20:59:54.630 に答える