我有一个问题,我循环抛出一组值,然后用每个循环创建一个PDO mySql查询,现在问题是第一个查询正在执行并返回结果,但第二个向上不返回结果。如果我在服务器上手动执行查询,则返回结果。这很奇怪,也许我在这里做错了。我的代码在下面
if($num_results > 0){
for($i=0;$i<$num_results;$i++){
$sql_sub = "SELECT * FROM menu_config WHERE client_id =".$client_id ." AND id =".$data[$i]['root_menu_id'];
$results_s = $pdo->query($sql_sub);
$data_s = $results_s->fetchAll(PDO::FETCH_ASSOC);
$sub_menu_title = "<strong>".$data[$i]['title']."</strong>";
if(empty($data_s[0]['title'])){
$main_menu_title = '<span style="color:#FF0000;font-weight:bold;">No Main Menu Assigned to Sub Menu</span>';
}else{
$main_menu_title = $data_s[0]['title'];
}
$men_title = $data[$i]['title']
}
}
答案 0 :(得分:5)
(这可能比你要求的多一点)
你似乎错过了准备陈述的一些好事。
首先,您通常不希望将值直接传递给查询。 (有时候这是必要的,但不是这里)。通过这样做,你可以取出所有保护sql注入的好东西。相反,您希望在准备好查询后将它们作为参数发送。
其次,在循环中,如果您通过准备语句反复运行相同的查询,然后只使用{{{}更改您发送到该预准备语句的值,则可以节省自己的时间和资源。 1}}功能。
第三,PDOStatement::bindParam()
没有采用PDO :: FETCH_ASSOC的'fetch_style'。 fetchAll()
。但我认为你可以使用默认值或使用fetchAll来实现。你必须检查它,看看你需要什么。以下是the fetchAll docs
fetch()