Pourquoi var_dump(stmt['likedFour']); retourner 's' :
Parce qu'il vous manque le signe dollar avant stmt , donc PHP pense que vous essayez d'accéder à la constante stmt au lieu de la variable $stmt . Puisque vous n'avez pas défini cette constante, il reviendra à supposer que vous essayez d'accéder à la chaîne "stmt" . Pour les chaînes, les indices doivent être numériques, donc PHP devrait vous lancer un avertissement "Décalage de chaîne illégal", mais essaiera de le réparer pour vous en diffusant 'likedFour' à un entier (qui sera 0 ).
Par conséquent, var_dump(stmt['likedFour']) signifie exactement la même chose que var_dump("stmt"[0]) à PHP, c'est pourquoi vous obtenez la sortie "s" :le premier caractère de "stmt" .
Comment obtenir le résultat que vous réellement veux :
Vous devez d'abord récupérer les lignes résultantes de votre requête. $stmt est le mysqli_stmt objet que vous utilisez pour exécuter la requête et récupérer les résultats, il ne s'agit pas réellement du résultat lui-même.
Pour vous éviter des maux de tête à l'avenir, vérifiez toujours si votre requête s'est même exécutée avec succès avant d'essayer de récupérer les résultats. Récupérez ensuite la ligne de données :
$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 vous ne savez pas combien de lignes seront renvoyées, parcourez-les par précaution :
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
var_dump($row['likedFour']);
}