2011-06-29 32 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