我是具有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)的常规信息都将有所帮助。

最佳答案

请考虑也使用占位符,而不是将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


但这并不是完美的,因为它必须执行内联子查询-最好将其加入到subcategory2表中,但我想您的DISTINCT subcat2会遇到一些GROUPING问题(假设它不是唯一的) -在这种情况下,您是否需要对subcat2进行分组?)

08-04 17:16