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