0

这是我正在考虑的一个简单场景。我有一个从 PHP 对 MySQL 数据库执行的查询。我想检查查询是否返回了任何数据。但是,为了执行该检查,它会提取其中一行返回的数据。

看看这个例子,以及它的评论:

$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...
}

如何在不运行两个查询(一个用于检查,另一个用于显示所有数据)或其中一个行被盗的情况下检查数据是否从数据库返回?

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 回答