なぜvar_dump(stmt['likedFour']); 's'を返す :
stmtの前にドル記号がないため 、したがって、PHPはあなたが定数にアクセスしようとしていると見なします stmt 変数の代わりに $stmt 。その定数を定義していないため、文字列にアクセスしようとしていると想定してフォールバックします。 "stmt" 。文字列の場合、インデックスは数値である必要があるため、PHPは「不正な文字列オフセット」警告をスローしますが、'likedFour'をキャストして修正しようとします。 整数(0になります) 。
したがって、var_dump(stmt['likedFour']) var_dump("stmt"[0])とまったく同じことを意味します PHPに変換します。これが、出力"s"を取得する理由です。 :"stmt"の最初の文字 。
実際に結果を得る方法 欲しい:
最初に、クエリから結果の行を取得する必要があります。 $stmt mysqli_stmtです クエリの実行と結果の取得に使用するオブジェクトであり、実際には結果そのものではありません。
将来の頭痛の種を減らすために、結果を取得する前に、クエリが正常に実行されたかどうかを常に確認してください。次に、データの行をフェッチします:
$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']);
}
返される行数がわからない場合は、安全のためにそれらをループしてください:
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
var_dump($row['likedFour']);
}