mysql_num_rows () работает только для буферизованных запросов. Если у вас потенциально большой / огромный набор результатов, вы можете переключиться на небуферизованные запросы , и num_rows больше не является опцией.
Вы можете проверить возвращаемое значение первого вызова mysql_fetch_array (). Если это ЛОЖЬ, не было подходящих записей.
<?php
$result = mysql_query("SELECT * FROM `picdb` WHERE `picid` = '$picid' ") or trigger_error(mysql_error());
$row = mysql_fetch_array($result, MYSQL_ASSOC);
if ( !$row ) {
echo '0 rows';
}
else {
do {
echo htmlspecialchars($row['x']), "<br />\n";
} while($row=mysql_fetch_array($result, MYSQL_ASSOC));
}
Недостатком этого метода do {} while () является то, что код $ row = mysql_fetch ... был продублирован. Но это всего лишь маленький дублет.