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