2011-06-29 30 views
0

如果我打電話從一個MySQL表命名類,我想我用Select語句,如鏈接列表:相呼應HTML鏈接

$query = "SELECT cat_name, cat_description FROM categories"; 
    $result = mysqli_query($dbc, $query) 
    or die('Error querying database.'); 

    while ($row = mysqli_fetch_array($result)){ 
    echo '$row'; 
    } 

這些類別已在mapping_table已經加入了business_info表(它們有多對多的關係)。我認爲目前這將回顯每個類別名稱的字符串,所以我不明白我如何使我的回顯結果活動鏈接,點擊時將顯示業務信息。

我知道一旦點擊它們就會向mapping_table發出一條SELECT語句,我很酷。我正在努力的一點就是讓他們可以點擊來發布該聲明。任何想法,我迷路了!

編輯:我編輯了AND子句。我錯了。

+3

什麼? ........... – dynamic

+1

你是否無法在你的URL中添加html? – Jrod

+3

'「SELECT cat_name和cat_description FROM categories」'不是有效的MySQL。 –

回答

7

您的SQL無效。這shoudd是

SELECT cat_name, cat_description FROM categories 

你死()條款應

... or die (mysql_error()) 

所以你可以看到的錯誤是什麼(固定字符串是無用的調試目的)。然後你的檢索循環應該是:

while($row = mysql_fetch_assoc($result)) { 
    echo <<<EOL 
<a href="script.php?category={$row['cat_name']}">{$row['cat_description']}</a> 

EOL; 
} 
+0

他的查詢中沒有語法錯誤,即他的SQL查詢無效。雖然,這可能不是他想要選擇的。 'die()'應該**從不輸出'mysql_error()'的結果,因爲它是敏感信息。 'mysql_error()'的結果可能會在某處記錄(手動或通過使用'trigger_error(mysql_error())'並讓PHP處理日誌記錄),但它永遠不會顯示給最終用戶。 – binaryLV

+0

不產生你想要的結果的查詢是語法錯誤。 「領域和其他領域」不是OP想要的。並且爲了調試目的,die()是有效的。我同意它不應該用於生產系統,但在測試時,它是非常寶貴的。 –

+0

「語法錯誤」是解析器無法解析的東西。即使查詢包含無效的表或字段名稱,也不會是*語法*錯誤。在這種情況下,它是相當*邏輯*錯誤或類似的東西。關於使用'die()'出於調試的目的 - 那麼人們多久會用一些簡潔的錯誤處理功能來替換所有的'die()'?如果是出於調試目的,只有在出現實際錯誤時才添加'die(mysql_error())',而不是將其放在那裏並忘記它。 – binaryLV