Mysql
 sql >> Database >  >> RDS >> Mysql

Tutti i valori ='s' nella tabella in errore PHP

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