PHP |准备/执行不起作用

时间:2016-11-17 10:08:38

标签: php select while-loop

我的部分代码存在问题。我在数据库中添加了一些例子

<?php
 require_once 'db.php';
 $res = $bdd->query("SELECT * FROM bien");
 $res2 = $bdd->prepare("SELECT * FROM bien_option WHERE id_bien=:id");
?>
<html>
<head>
<meta charset="utf-8">
</head>
<h2>Mes Biens:</h2>
<?php

while($mesBiens = $res->fetch()){
    echo '<h3>Nom : '.$mesBiens['nom'].'</h3>';
    echo 'Type : '.$mesBiens['type'].'<br/>';
    echo 'Prix : '.$mesBiens['prix'].'€<br/>';
    echo 'Surface : '.$mesBiens['surface'].'m²<br/>';
    while($mesOptions = $res2->fetch()){
        $res = $bdd->execute(array(':id'=>$mesBiens['id']));
        echo $mesOptions['nom'];
    }
}



?>

echo mesOptions['nom']没有显示任何内容,我没有收到任何错误消息。

2 个答案:

答案 0 :(得分:2)

你需要执行你的陈述。

直接从数据库查询:

abc_enum

这将在服务器上准备语句。把它想象成告诉数据库你将在下次发送大量这些查询。数据库确实&#34;编译&#34;这句话非常有效:

$res = $bdd->query("SELECT * FROM bien");

现在你必须绑定一个值(:id)和execute it

$statment = $bdd->prepare("SELECT * FROM bien_option WHERE id_bien=:id");

此时数据库使用您的参数执行SQL并为您准备了一个结果,您现在需要调用它:

$statement->bindParam(':id', $id, PDO::PARAM_INT);
$statement->execute();

或者,如果你喜欢把它放在一个循环中:

$result = $statement->fetchAll();

请注意,如果经常重复查询,准备语句很有意义。

答案 1 :(得分:0)

所以我只是编辑了一些东西并且它起作用了:)

while($mesBiens = $res->fetch()){
    echo '<h3>Nom : '.$mesBiens['nom'].'</h3>';
    echo 'Type : '.$mesBiens['type'].'<br/>';
    echo 'Prix : '.$mesBiens['prix'].'€<br/>';
    echo 'Surface : '.$mesBiens['surface'].'m²<br/>';
    $options = $res2->execute(array(':id'=>$mesBiens['id'])); 

    while($mesOptions = $res2->fetch()) { 
        echo 'Option: '.$mesOptions['nom'].'<br/>'; 
    }
}