Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Todos os valores ='s' na tabela em erro PHP

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