Por que var_dump(stmt['likedFour']);
retornar 's'
:
Porque está faltando o cifrão antes de
stmt
, então o PHP pensa que você está tentando acessar a constante stmt
em vez da variável $stmt
. Como você não definiu essa constante, ela voltará a assumir que você está tentando acessar a string "stmt"
. Para strings, os índices devem ser numéricos, então o PHP deve estar lançando um aviso "Illegal string offset", mas tentará corrigi-lo para você lançando 'likedFour'
para um inteiro (que será 0
). Portanto,
var_dump(stmt['likedFour'])
significa exatamente a mesma coisa que var_dump("stmt"[0])
para PHP, e é por isso que você está obtendo a saída "s"
:o primeiro caractere de "stmt"
. Como obter o resultado que você realmente deseja:
Primeiro você precisa recuperar as linhas resultantes de sua consulta.
$stmt
é o mysqli_stmt
objeto que você usa para executar a consulta e recuperar os resultados, não é realmente o resultado em si. Para evitar dores de cabeça no futuro, sempre verifique se sua consulta foi executada com sucesso antes de tentar recuperar os resultados. Em seguida, busque a linha de dados:
$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 você não sabe quantas linhas serão retornadas, percorra-as apenas para garantir:
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
var_dump($row['likedFour']);
}