【发布时间】:2013-09-12 07:18:13
【问题描述】:
我使用了以下代码,如有错误请解决
我正在尝试使用子类别表中的 parentID 从类别表中捕获类别名称
这里是代码
$query_select = "SELECT * FROM subcategory where parentID<>0 and isDisabled=0 and isDeleted=0";
$result_select = mysql_query($query_select) or die(mysql_error());
$rows = array();
while($row = mysql_fetch_array($result_select))
$rows[] = $row;
foreach($rows as $row){
$id = $row['subcatID'];
$subname = $row['subcatName'];
$parentID= $row['parentID'];
$status = $row['isDisabled'];
$catname="";
echo "<tr><td style='display:none;'>$id</td>";
echo "<td><center>$subname</center></td>";
$resultnew=mysql_query("select catName from category where catID=$parentID");
while(mysql_fetch_row($resultnew)){
$catname = $resultnew[0];
echo "<script>alert($catname);</script>";
echo "<td class='center'><center>$catname</center></td>";
}
if($status==0)
{
echo "<td class='center'><center><span class='label label-success'>Active</span></center></td>";
}else{
echo "<td class='center'><center><span class='label label-important'>Disabled</span></center></td>";
}
echo "<td class='center'><center>";
echo "<a class='btn btn-success' href='#'><i class='icon-zoom-in icon-white'></i>View</a>";
echo "<a class='btn btn-info' href='#'><i class='icon-edit icon-white'></i>Edit</a>";
echo "<a class='btn btn-danger' href='#'><i class='icon-trash icon-white'></i>Delete</a>";
echo "</center></td>";
echo "</tr>";
}
【问题讨论】:
-
请注意 mysql_* 函数已弃用、不安全且不应使用。考虑使用 mysqli_* 函数或 PDO。
-
在两种不同的情况下重复使用
$row并没有帮助;使用$oldRow和$newRow或类似的,使逻辑更清晰 -
点重用 $row,尝试使用 while($row = mysql_fetch_array($result_select)) foreach($row as $row1){ 而不是 while($row = mysql_fetch_array($result_select)) $行[] = $行; foreach($rows as $row){
-
在您的内部
while循环中,您没有将mysql_fetch_row($resultnew)的结果分配给任何东西。然后下一行使用$resultnew,就好像它是返回的行一样。 -
您根本不应该使用嵌套查询,您应该在
categories和subcategories表之间进行 LEFT JOIN,以便在一个查询中获取所有内容。
标签: php mysql sql while-loop nested-loops