Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Alle Werte ='s' in Tabelle in PHP-Fehler

Warum funktioniert var_dump(stmt['likedFour']); gibt 's' zurück :

Weil Ihnen das Dollarzeichen vor stmt fehlt , also denkt PHP, dass Sie versuchen, auf die Konstante zuzugreifen stmt anstelle der Variablen $stmt . Da Sie diese Konstante nicht definiert haben, wird davon ausgegangen, dass Sie versuchen, auf die Zeichenfolge zuzugreifen "stmt" . Für Strings müssen Indizes numerisch sein, also sollte PHP Ihnen eine „Illegal String Offset“-Warnung ausgeben, wird aber versuchen, es für Sie zu beheben, indem es 'likedFour' umwandelt in eine Ganzzahl (die 0 sein wird ).

Daher var_dump(stmt['likedFour']) bedeutet genau dasselbe wie var_dump("stmt"[0]) zu PHP, weshalb Sie die Ausgabe "s" erhalten :das erste Zeichen von "stmt" .

Wie Sie das Ergebnis eigentlich erhalten wollen:

Sie müssen zuerst die Ergebniszeilen aus Ihrer Abfrage abrufen. $stmt ist mysqli_stmt Objekt, das Sie verwenden, um die Abfrage auszuführen und die Ergebnisse abzurufen, ist es nicht wirklich das Ergebnis selbst.

Um sich in Zukunft Kopfschmerzen zu ersparen, überprüfen Sie immer, ob Ihre Abfrage überhaupt erfolgreich ausgeführt wurde, bevor Sie versuchen, die Ergebnisse abzurufen. Rufen Sie dann die Datenzeile ab:

$success = $stmt->execute();
if (!$success) {
    echo $stmt->error;
} else if ($stmt->num_rows == 0) {
    echo 'No results matching that username';
} else {
    $result = $stmt->get_result();
    $row = $result->fetch_assoc();
    var_dump($row['likedFour']);
}

Wenn Sie nicht wissen, wie viele Zeilen zurückgegeben werden, durchlaufen Sie sie sicherheitshalber:

$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
    var_dump($row['likedFour']);
}