我的一部分代码有问题。我在数据库
中添加了一些示例<?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/>';
}
}