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