Php 尝试将mysql查询转换为pdo

Php 尝试将mysql查询转换为pdo,php,mysql,pdo,Php,Mysql,Pdo,我正在尝试更新以下代码以使用PDO,但无法完全理解如何从上次查询中获取结果: 现行守则: $q=mysql_query("select * from type where parent_id=0"); while($dd=mysql_fetch_array($q)): $typename = mysql_real_escape_string($dd[type_name]); echo "<span class='category-title'>

我正在尝试更新以下代码以使用PDO,但无法完全理解如何从上次查询中获取结果:

现行守则:

$q=mysql_query("select * from type where parent_id=0");
    while($dd=mysql_fetch_array($q)):

     $typename = mysql_real_escape_string($dd[type_name]);

         echo "<span class='category-title'>" . $typename . " </span>";


      $r2=mysql_query("select * from type where parent_id=".$dd[id]);

        while($d3=mysql_fetch_array($r2)):

$rr=mysql_query("select * from code where lid=" . $d[id] . " and pid=" .$d3[id]);



            if(mysql_num_rows($rr)):

    echo "" . mysql_real_escape_string($d3[type_name]) .", ";   

            endif;

    endwhile;

endwhile;
到目前为止,我已经:

  try{
   $stmt = $dbh->prepare('SELECT * FROM type  WHERE parent_id = 0 ');
   // THIS SELECTS ALL THE CATEGORY TITLES ONLY
   $stmt->setFetchMode(PDO::FETCH_ASSOC);
   $stmt->execute();
 } catch (PDOException $e) {

  print "Error selecting FROM  type!: " . $e->getMessage() . "<br/>";
                          die();
                  }

// ** LOOP THROUGH RESULTS FOR TYPE CATEGORIES**//
          foreach ($stmt->fetchAll() as $row):

//** OUTPUT THE CATEGORY TITLES **//              
          echo "<strong>".$row['type_name'] . "</strong><br />\t";



try{                       
   $stmt = $dbh->prepare('SELECT * FROM type  WHERE parent_id = :value ');
   // THIS SELECTS THE SPECIFIC CATEGORY DATA **//
   $stmt->bindParam(':value', $row ['id']);
   $stmt->setFetchMode(PDO::FETCH_ASSOC);
   $stmt->execute();
    } catch (PDOException $e) {
   print "Error selecting FROM type!: " . $e->getMessage() . "<br/>";
 die();
}

foreach ($stmt->fetchAll() as $row):
  $array[] = $row['type_name'];


try{                       
$stmt = $dbh->prepare('SELECT * FROM code_data  WHERE lid = :value AND pid = :value ');
$stmt->bindParam(':value', $id);
$stmt->bindParam(':value', $row['id']);
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$stmt->execute();
$num_rows = $stmt->fetchAll();
      } catch (PDOException $e) {
   print "Error selecting FROM code_data!: " . $e->getMessage() . "<br/>";
  die();
                  } 


  if ($num_rows > 1):

    echo $row['type_name']. "<br />";// THIS JUST OUTPUTS ALL THE DATA


           endif;
                  endforeach;
    endforeach;
 endif;

我真的很希望有人能看到这一点,因为坦率地说,我被难住了

抛出错误报告-1;并修复所有错误。另外,请正确缩进代码;不可能按照代码的流程进行操作。您现在的代码有什么问题吗?您可以将两个select*from类型查询合并为一个合并的查询。只要你有嵌套的循环,并且内部循环依赖于外部循环的数据,连接就可以同时替换这两个循环。基本上,返回的结果应该是这样的:category1subcatsubcatcatcategory2subcatsubcat等等。我得到了一个类别列表,但是每个类别的所有子类别都将返回,而不仅仅是相关类别。