2009-04-08 7 views
0

Ich bin eine Mysqli zubereiteten Abfrage mit PHP verwendet wird, ist der Code:den Inhalt einer MySQL-Abfrage angezeigt wird, nur das erste Feld arbeitet

$retreiveQuery = 'SELECT username, firstname, lastname FROM USERS WHERE username = ?'; 

if ($getRecords = $con->prepare($retreiveQuery)) { 
    $getRecords->bind_param("s", $username); 

    $getRecords->execute();   
    $getRecords->bind_result($username, $firstname, $lastname); 

echo "<h1>".$username."</h1> 
<p><strong>First Name: </strong>".$firstname." 
<p><strong>Surname: </strong>".$lastname." 
} else { 
print_r($con->error); 

Das ist ganz merkwürdig. Benutzername ist das einzige Feld, das angezeigt wird. Warum sollten die anderen Spalten nicht zurückgegeben/gebunden werden?

Wenn ich

tun
SELECT username, firstname, lastname FROM USERS WHERE username = 'test'; 

direkt auf die Datenbank werden alle Felder angezeigt werden, und alle gültige Daten enthalten.

Antwort

1

Sie haben

$getRecords->fetch(); 

nach bind_result() rufen, um tatsächlich den Rekord zu bekommen.

Der Benutzername wurde ausgegeben, weil Sie ihn bereits festgelegt hatten, um ihn als Eingabeparameter zu verwenden.

1

Was passiert, wenn Sie einen anderen Variablennamen für die Ausgabe des Benutzernamens verwenden? So:

SELECT Benutzername als Benutzername, Vorname, Nachname VON BENUTZERN WHERE username = 'test';

und dann

$ getRecords-> bind_result ($ user_name, $ Vorname, Nachname $);

Ich frage mich, ob es verwirrt wird, indem Sie den gleichen Namen für die Eingabe und Ausgabe verwenden?

+0

ok..so ist es ein Problem mit der Ergebnisbindung ich denke..aber wie kann ich sagen, was es ist? –

1

Ich habe dies nicht ausgeführt, aber ich stelle fest, dass Sie die gleiche Variable, $ Benutzername für die gebundene Parameter und gebundene Ergebnisvariable verwenden.

Es kann sein, dass das Ergebnis keine von ihnen zurückgibt, aber $ Benutzername hat einen Wert angezeigt, weil Sie es vorher zuweisen, nicht weil es aus der Datenbank kommt.

Probieren Sie verschiedene Möglichkeiten wie $ param_user und $ result_user, und sehen Sie, was passiert. Meine Vermutung ist, dass keines der Ergebnisse zurückgegeben wird, was auf ein Problem mit der Abfrage oder der Ergebnisbindung hinweist.

+0

Ja, das ist die Antwort. Also was könnte das Problem mit dem Ergebnis sein ... wie würde ich das überprüfen? –

Verwandte Themen