我是初学者,拥有基本的PHP知识。我有一个查询我的数据库的多个下拉菜单项列表。在提交时,我想显示从数据库中选择的项目的描述。
我的查询
$cat3=$_GET['cat3'];
if(isset($cat3) and strlen($cat3) > 0){
$quer3="SELECT DISTINCT subcat2, detail FROM subcategory2 where subcat_id=$cat3 order by subcat2";
}else{$quer3="SELECT DISTINCT subcat2 FROM subcategory2 order by subcat2"; }
在sumbit上发布了什么
echo "<select name='subcat3' ><option value=''>Select one</option>";
foreach ($dbo->query($quer3) as $noticia) {
echo "<option value='$noticia[subcat2]'>$noticia[subcat2]</option>";
}
echo "</select>";
是否可以在subcat3中传递我的详细信息字段,或者我是否必须创建另一个名为details的表和另一个查询($ quer4)并通过subcat2 id链接它?
任何类似于项目搜索结果(ebay)的一般信息都会有所帮助。
答案 0 :(得分:0)
请考虑使用占位符而不是将GET参数直接传递到SQL中 - 这里有一篇很好的帖子,我建议你看一下:
How can I prevent SQL injection in PHP?
但是 - 这应该有效(但并不理想)
SELECT DISTINCT subcat2
, detail
, ( SELECT cat3_descr
FROM subcategory3
WHERE subcat_id = ?
) AS cat3_descr
FROM subcategory2
WHERE subcat_id = ?
ORDER BY subcat2 ASC
这不完美,因为它必须进行内联子查询 - 最好在子类别2表上加入它,但我想你会遇到DISTINCT subcat2的一些GROUPing问题(假设它不是唯一的 - 在这种情况下,你需要对subcat2进行分组吗?)