2016-11-17 2 views
1

Ich habe ein Problem mit einem Teil meines Codes. Ich habe einige Beispiele in der DatenbankPHP | eine Vorbereitung/Ausführung hat nicht funktioniert

<?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'] nichts zeigte, und ich erhielt keine Fehlermeldung.

+0

, wenn ich es vor, während hinzugefügt ich diese: (!) – bezoo

+0

Fatal error: Uncaught Fehler: Call to undefined PDO Methode :: execute() in C: \ wamp64 \ www \ ex1 \ index.php in Zeile 18 (!) Fehler: Aufruf der undefinierten Methode PDO :: execute() in C: \ wamp64 \ www \ ex1 \ index.php in Zeile 18 – bezoo

+0

"Ich habe einige Beispiele in der BDD hinzugefügt" - Ich sehe nichts in Bezug auf BDD in der Frage. – Quentin

Antwort

2

Sie müssen Ihre Aussage ausführen. direkt

Diese Anfragen aus der Datenbank:

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

Diese die Anweisung auf dem Server erstellt. Denken Sie darüber nach, wie Sie der Datenbank mitteilen, dass Sie in der nächsten Zeit viele dieser Anfragen senden werden. Die Datenbank „kompilieren“ diese Aussage, so dass es effizienter ist:

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

Jetzt müssen Sie einen Wert binden (das: id) und execute it:

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

An diesem Punkt der Datenbank ausgeführt, um die Verwendung von SQL Ihre Parameter und bereitete ein Ergebnis für Sie, was Sie jetzt rufen müssen:

$result = $statement->fetchAll(); 

Oder, wenn Sie es in einer Schleife zu bevorzugen:

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

Bitte beachten Sie, dass das Erstellen von Anweisungen sehr sinnvoll ist, wenn Sie die Abfrage oft wiederholen.

0

So bearbeitete ich nur einige Dinge, und es ist Arbeit :)

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