Müssen Sie mysqli-Anweisungen schließen?
Problem
Ich versuche zu zählen, wenn es eine Registrierung mit der gleichen Telefonnummer und Datum gibt. Dies soll verhindern, dass Personen zwei Reservierungen am selben Datum (Uhrzeit) registrieren. Mein Problem ist, dass ich erwarte, dass die Abfrage
0
zurückgibt, weil es keine Registrierung mit den gleichen Details in der Datenbank gibt. Das Ergebnis ist jedoch
1
. Das würde anzeigen, dass bereits etwas in der Datenbank mit den gleichen Informationen vorhanden ist, aber nicht. Meine Vermutung ist, dass es mit der Abfrage zu tun hat, die ich vor der aktuellen Abfrage ausführe. Ich frage mich, ob ich versuchen sollte, die Aussage zu schließen.
Was habe ich versucht
ich versucht habe, schließt die Erklärung
$stmt->close()
aber ohne Erfolg. Ich habe versucht, neue Variablen zu erstellen, anstatt die aus der vorherigen Abfrage zu verwenden, aber das hat auch nicht funktioniert. Ich habe die Datenbank dreifach überprüft, um sicherzustellen, dass es dort keine Registrierung mit denselben Details gibt, und ich bin 100% sicher, dass in der Datenbank nichts falsch ist.
Code
Hier ist mein Code. Ich denke das Problem liegt im ersten Abfrageteil.
$query = "SELECT count(*) as reservation_amount FROM reservation WHERE `date`= ?";
$stmt = $db->prepare($query);
$stmt->bind_param("s", $datetime);
$stmt->execute();
$stmt->bind_result($count);
while($row = $stmt->fetch()){
$res_count = $row; //res_count is 1 in this case. I'm thinking I need to close something here?
}
$query = "SELECT count(*) as registered FROM reservation WHERE `number` = ? and `date`= ?";
$stmt = $db->prepare($query);
$stmt->bind_param("is", $number, $datetime);
$stmt->execute();
$stmt->bind_result($count);
while($row = $stmt->fetch()){
$registered = $row; //outputs 1 but I'm expecting 0
}
Eingang
datetime = 2014-12-28 17:00:00
number = 0612345678
Datenbank
Die Datenbank enthält den folgenden Datensatz:
id name surname number email date amount
5 Henk Houtman 9060666 [email protected] 2014-12-28 17:00:00 1
Fehler
Keine Fehler.
'number = 0612345678' ist' int' wird in einen anderen Dezimalwert konvertiert –
'$ statement-> fetch()' gibt boolean true zurück und wird als 1 ausgewertet. Wahrscheinlich möchten Sie 'store_result()' und 'bind_result()'. http://php.net/manual/en/mysqli-stmt.bind-result.php –