PHP | a prepare/execute不起作用


PHP | a prepare/execute didn't work

我的一部分代码有问题。我在数据库

中添加了一些示例
<?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']没有显示任何东西,我没有收到任何错误信息。

你需要执行你的语句。

直接从数据库查询:

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

在服务器上准备语句。可以把它看作是告诉数据库您将在下次发送很多这样的查询。数据库确实"编译"了这条语句,所以它是高效的:

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

现在您必须绑定一个值(:id)并执行它:

$statement->bindParam(':id', $id, PDO::PARAM_INT);
$statement->execute();
此时,数据库使用您的参数执行SQL并为您准备了一个结果,您现在需要调用这个结果:
$result = $statement->fetchAll();

或者,如果你想让它在循环中:

while($mesBiens = $statement->fetch()) { ... }

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

所以我只是编辑了一些东西,它的工作:)

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/>'; 
    }
}