2011-09-04 77 views
0

我真的不明白的問題是什麼在這裏,我用盡了一切我能做的診斷問題,並設法隔離,我認爲這個問題正在引起的(見下文隔離):腳本打破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;這應該是隨機選擇的網址,什麼也不顯示。

爲了診斷問題,我一直試圖使用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()); 

沒有人有任何想法,爲什麼這會導致腳本的其餘部分無法運行,但回報沒有錯誤?

任何幫助將不勝感激。

+0

你可以添加一個'死mysql_error()'*每* * mysql_query'調用? –

+0

對不起,沒有意識到我錯過了一個,我現在要做,並相應地更新。 – Avicinnian

回答

3

我認爲這個問題是在這一行:

$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 
+0

你是對的,謝謝!一旦定時器下降,我會接受你的評論:)! – Avicinnian

相關問題