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