sql >> Database teknologi >  >> RDS >> Mysql

Alle værdier ='s' i tabellen i PHP-fejl

Hvorfor gør var_dump(stmt['likedFour']); returner 's' :

Fordi du mangler dollartegnet før stmt , så PHP tror, ​​du forsøger at få adgang til konstanten stmt i stedet for variablen $stmt . Da du ikke har defineret denne konstant, vil den falde tilbage til at antage, at du forsøger at få adgang til strengen "stmt" . For strenge skal indeks være numeriske, så PHP burde give dig en "Ulovlig strengforskydning"-advarsel, men vil forsøge at rette det for dig ved at caste 'likedFour' til et heltal (som vil være 0 ).

Derfor var_dump(stmt['likedFour']) betyder nøjagtig det samme som var_dump("stmt"[0]) til PHP, hvilket er grunden til, at du får outputtet "s" :det første tegn fra "stmt" .

Sådan får du det resultat, du faktisk ønsker:

Du skal først hente de resulterende rækker fra din forespørgsel. $stmt er mysqli_stmt objekt, som du bruger til at udføre forespørgslen og hente resultaterne, det er faktisk ikke selve resultatet.

For at spare dig selv for hovedpine i fremtiden, skal du altid kontrollere, om din forespørgsel overhovedet er udført korrekt, før du prøver at hente resultaterne. Hent derefter rækken af ​​data:

$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']);
}

Hvis du ikke ved, hvor mange rækker der vil blive returneret, skal du gå gennem dem for en sikkerheds skyld:

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



  1. Sådan fungerer LIKE-operatøren i MariaDB

  2. SQL Server - transaktioner ruller tilbage ved fejl?

  3. Returner værdi fra sql-script til shell-script

  4. php/mysql. Er der mysql-funktion til at opdage, om der findes mindst 2 bestemte ord i mindst ét ​​mysql-rækkefelt