2013-03-27 25 views
0

我試圖確定與論壇相關的主題組合是否是唯一的。這是在向論壇添加主題時完成的。使用此代碼和查詢來檢查唯一性:從其中有implode函數的查詢獲取輸出

$options = array(); //here's your choices 
$options[] = 'blablabla'; 
$options[] = 'blabla'; 

foreach($options as $key => $value) 
    { 
     echo '<li>' . $value . '</li>'; 
    } 

$sql_unique = "SELECT Forums_ForumID, list 
      FROM (
     SELECT Forums_ForumID, GROUP_CONCAT(Topics_TopicID) AS list 
     FROM (
      SELECT * 
      FROM Topics_crosstable 
      ORDER BY Topics_TopicID 
     )H 
     GROUP BY Forums_ForumID 
      )A 
      WHERE list = (
     SELECT GROUP_concat(TopicID) 
     FROM Topics 
     WHERE Name IN ("; 
$sql_unique .= implode(",",$options); 
$sql_unique .= ") ORDER BY Forums_ForumID ASC)"; 

$result = mysql_query($sql_unique); 
//print "$result"; 
//echo $result; 
//echo mysql_num_rows($result); 
//$assoc = mysql_fetch_assoc($result); 

var_dump($result); 

我確定查詢在WHERE中使用固定值時工作正常。使用當前的代碼,我無法獲得任何輸出。無論主題組合是否唯一,vardump都會給出結果'false'。我一直在努力幾天,所以我真的幫助你,可以幫助我! 在此先感謝!

+1

你的'$ options'數組中值是字符串,所以你必須插入到你的SQL字符串 – Dehalion 2013-03-27 00:14:56

回答

2

如果它們是字符串,則必須引用您的選項。

$sql_unique .= "'". implode("','", $options) ."'"; 
+0

不過,我確實應該這樣做之前,引用他們,我還是沒能得到輸出I」之後。無論數組的輸入是什麼,當回顯時結果現在是'resource(4)type(mysql result)'或'Resource id#4'。 – user1803370 2013-03-27 00:34:40

+0

如果(!$ res = mysql_query($ sql_unique)) { trigger_error(mysql_error()。'
)在查詢中:'。$ sql);則可以通過添加: 來修復它。 } // elseif(mysql_num_rows($ sql_unique)== 0) // {0}'echo Geen resultaten gevonden'; //} else { $ row = mysql_fetch_assoc($ res); if(!$ row) { echo'主題組合是唯一的'; } else { echo $ row ['list']。''
'; } } – user1803370 2013-03-27 02:39:20