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