我的部分代码存在问题。我在数据库中添加了一些例子
<?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']
没有显示任何内容,我没有收到任何错误消息。
答案 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/>';
}
}