¿Por qué var_dump(stmt['likedFour']);
devolver 's'
:
Porque te falta el signo de dólar antes de stmt
, por lo que PHP cree que está intentando acceder a la constante stmt
en lugar de la variable $stmt
. Como no ha definido esa constante, volverá a asumir que está intentando acceder a la cadena "stmt"
. Para las cadenas, los índices deben ser numéricos, por lo que PHP debería mostrarle una advertencia de "desplazamiento de cadena ilegal", pero intentará solucionarlo lanzando 'likedFour'
a un número entero (que será 0
).
Por lo tanto, var_dump(stmt['likedFour'])
significa exactamente lo mismo que var_dump("stmt"[0])
a PHP, por lo que está obteniendo la salida "s"
:el primer carácter de "stmt"
.
Cómo obtener el resultado que realmente quiero:
Primero debe recuperar las filas resultantes de su consulta. $stmt
es el mysqli_stmt
objeto que utiliza para ejecutar la consulta y recuperar los resultados, en realidad no es el resultado en sí.
Para ahorrarse dolores de cabeza en el futuro, siempre verifique si su consulta se ejecutó con éxito antes de intentar recuperar los resultados. Luego busque la fila de datos:
$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']);
}
Si no sabe cuántas filas se devolverán, revíselas solo para estar seguro:
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
var_dump($row['likedFour']);
}