Perché var_dump(stmt['likedFour']);
restituisci 's'
:
Perché ti manca il simbolo del dollaro prima di stmt
, quindi PHP pensa che tu stia tentando di accedere alla costante stmt
invece della variabile $stmt
. Dal momento che non hai definito quella costante, ricadrà sul presupposto che stai tentando di accedere alla stringa "stmt"
. Per le stringhe, gli indici devono essere numerici, quindi PHP dovrebbe inviarti un avviso "offset stringa illegale" ma proverà a risolverlo per te eseguendo il casting di 'likedFour'
a un numero intero (che sarà 0
).
Pertanto, var_dump(stmt['likedFour'])
significa esattamente la stessa cosa di var_dump("stmt"[0])
in PHP, motivo per cui ottieni l'output "s"
:il primo carattere di "stmt"
.
Come ottenere il risultato tu effettivamente vuoi:
Devi prima recuperare le righe risultanti dalla tua query. $stmt
è il mysqli_stmt
oggetto che utilizzi per eseguire la query e recuperare i risultati, in realtà non è il risultato stesso.
Per risparmiarti mal di testa in futuro, controlla sempre se la tua query è stata eseguita correttamente prima di provare a recuperare i risultati. Quindi recupera la riga di dati:
$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']);
}
Se non sai quante righe verranno restituite, scorrele per sicurezza:
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
var_dump($row['likedFour']);
}