2012-02-13 72 views
0

我一直在編寫一個腳本來顯示用戶的名字,這取決於他們是否分配了偶數或奇數的註釋ID。它調用來自同一個數據庫中2個不同表的數據。以下是表格信息:爲什麼這個腳本不工作? (奇數/偶數)

表'comments'包含紀念,tutorialid,名稱,日期的列:表'winners'具有列池,池2,池3,池4,池5,池6,池7。表'註釋'具有多個通過用戶輸入更新的行。表'獲獎者'只有1行,每天隨機生成數字。

顯示「結果1」和「結果2」的腳本的第一部分工作正常。不工作的部分是調用用戶名的部分。我只想顯示與顯示IE的結果相關的用戶名,如果選擇了結果1,那麼我只想要顯示甚至是'commentid'的用戶名。

<?php 
$db = mysql_connect('localhost', 'username', 'pass') or die("Database error"); 
mysql_select_db('dbname', $db); 

$query = "SELECT pool FROM winners"; 
$result = mysql_query($query) or die(mysql_error()); 

while($row = mysql_fetch_array($result)) 
    if ($row['pool'] % 2) { 
     echo "<h4>Result 1</h4>"; 
     $names = get_names(1); 
     foreach($names as $name) { 
      echo $name . "<br/>"; 
     } 
    } else { 
     echo "<h4>Result 2</h4>"; 
     $names = get_names(0); 
     foreach($names as $name) { 
      echo $name . "<br/>"; 
     } 
    } 

function get_names($pool_result) 
{ 
    $name_array = array(); 

    $query = "SELECT * FROM comments where mod('commentid',2) = $pool_result"; 
    $result = mysql_query($query); 

    while ($row = mysql_fetch_array($result)) { 
     array_push($name_array, $row['name']); 
    } 

    return $name_array; 
} 
?> 

任何人都可以找出爲什麼這不起作用嗎?

+0

你連接到數據庫兩次... – Borealid 2012-02-13 23:23:57

+0

笑,你是對的。我修正了這個問題,但它仍然無法解決我的問題。 – user1206214 2012-02-13 23:29:07

回答

0

各地commentid把它當作一個字符串添加引號,你不能用一個整數國防部的字符串。而不是嘗試以下操作:

$query = "SELECT * FROM comments WHERE commentid % 2 = $pool_result";

這是從下面的堆棧問題採取:select row if the "value" % 2 = 1. MOD()

+0

這個修好了,非常感謝 – user1206214 2012-02-13 23:57:48

+0

沒問題。很高興工作! – 2012-02-14 00:17:21

+0

呃,現在我不斷收到錯誤無法重新聲明函數get_names。我需要在同一頁面多次使用此腳本的變體 – user1206214 2012-02-14 00:32:58

1

帶有mod的SELECT語句不引用該字段。應該反引號而不是單引號。單引號表示一個字符串常量,這會導致一個恆定的結果集(mod('commentid',2)看起來具有0的結果)。它應該是這樣的:

$query = "SELECT * FROM comments where mod(`commentid`,2) = $pool_result"; 
+0

嗯,我只是試過你的建議,反駁幾乎每一個組合可能在該行,我仍然得不到輸出或錯誤 – user1206214 2012-02-13 23:34:37

+0

@ user1206214:如果你獨立運行該查詢(例如,在命令行客戶端),你得到預期的結果? – 2012-02-13 23:41:43