Php 尝试将mysql查询转换为pdo
我正在尝试更新以下代码以使用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'>
$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等等。我得到了一个类别列表,但是每个类别的所有子类别都将返回,而不仅仅是相关类别。