Скрипт, подпадающий под запросы MySQL, но не указана ошибка?

Я действительно не понимаю, в чем проблема, я пробовал все, что я могу сделать, диагностировать проблему, и мне удалось изолировать, где я думаю, что проблема вызвана (см. Раздел ниже):

Вот мой полный код:

include("db_conn.php"); $conn = mysql_connect($db_host, $db_user, $db_pass) or die(mysql_error()); mysql_select_db($db_name) or die(mysql_error());; $timestamp = time(); $add_time = time()+(60*60); $query = "UPDATE links SET timestamp = '$add_time', hit_counter = '0' WHERE timestamp >= '$timestamp' AND overflow = 'NO'"; $result = mysql_query($query) or die(mysql_error()); $query = "SELECT * FROM links WHERE timestamp <= '$timestamp' AND hit_counter <= max_hits AND overflow = 'NO'"; $result = mysql_query($query); $size = mysql_num_rows($result) or die(mysql_error()); if($size == 0) { $query = "SELECT * FROM links WHERE overflow = 'YES'"; $result = mysql_query($query) or die(mysql_error()); $overflow = array(); while($row = mysql_fetch_assoc($result)) { $overflow[] = $row['link']; } header("Location: http://www.google.com/?url=$overflow[0]"); } $links = array(); $hits = array(); while($rows = mysql_fetch_assoc($result)) { $links[] = $rows['link']; $hits[] = $rows['hit_counter']; } $key = rand(0,$size); $link = $links[$key]; $hit_counter = $hits[$key]+1; $query = "UPDATE links SET hit_counter = '$hit_counter' WHERE link = '$link'"; $result = mysql_query($query) or die(mysql_error());*/ echo $link; echo $hit_counter; mysql_close($conn); 

Когда скрипт запущен, echo $link; который должен быть случайно выбранным URL-адресом, ничего не отображает.

Чтобы диагностировать проблему, я пытаюсь использовать echo "Hello World!"; , постепенно перемещая его по сценарию, ничего не отображается до появления echo "Hello World!"; помещается перед исходным запросом MySQL, что заставляет меня думать, что проблема там находится, даже если никакие mysql_error()'s не печатаются.

Кроме того, я попытался echo $size; на строке ниже $size = ... и которая пока ничего не отображает.

Изоляция:

 $query = "UPDATE links SET timestamp = '$add_time', hit_counter = '0' WHERE timestamp >= '$timestamp' AND overflow = 'NO'"; $result = mysql_query($query) or die(mysql_error()); $query = "SELECT * FROM links WHERE timestamp <= '$timestamp' AND hit_counter <= max_hits AND overflow = 'NO'"; $result = mysql_query($query); $size = mysql_num_rows($result) or die(mysql_error()); 

Кто-нибудь не знает, почему это приведет к тому, что остальная часть скрипта не будет запущена, но не возвратит никаких ошибок?

Любая помощь будет принята с благодарностью.

Я думаю, проблема в этой строке:

 $size = mysql_num_rows($result) or die(mysql_error()); 

когда вызов num_rows возвращает 0 , интерпретатор будет анализировать часть die(mysql_error()) даже если ошибки вообще нет.

Урок: лучше избегать конструкций ... or die() . Сделайте правильную проверку:

 $size = mysql_num_rows($result); if ($size === false) die(mysql_error()); // or, even better, trigger_error() // so mySQL errors aren't shown // in production