Mengapa var_dump(stmt['likedFour']);
kembalikan 's'
:
Karena Anda kehilangan tanda dolar sebelum stmt
, jadi PHP mengira Anda mencoba mengakses konstanta stmt
bukannya variabel $stmt
. Karena Anda belum mendefinisikan konstanta itu, itu akan kembali ke asumsi Anda mencoba mengakses string "stmt"
. Untuk string, indeks harus numerik sehingga PHP seharusnya memberi Anda peringatan "Illegal string offset" tetapi akan mencoba memperbaikinya untuk Anda dengan mentransmisikan 'likedFour'
ke bilangan bulat (yang akan menjadi 0
).
Oleh karena itu, var_dump(stmt['likedFour'])
artinya sama persis dengan var_dump("stmt"[0])
ke PHP, itulah sebabnya Anda mendapatkan output "s"
:karakter pertama dari "stmt"
.
Cara mendapatkan hasil yang Anda sebenarnya ingin:
Anda harus terlebih dahulu mengambil baris yang dihasilkan dari kueri Anda. $stmt
adalah mysqli_stmt
objek yang Anda gunakan untuk mengeksekusi kueri dan mengambil hasilnya, sebenarnya bukan hasil itu sendiri.
Untuk menyelamatkan diri Anda dari sakit kepala di masa mendatang, selalu periksa apakah kueri Anda berhasil dieksekusi sebelum mencoba mengambil hasilnya. Kemudian ambil baris datanya:
$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']);
}
Jika Anda tidak tahu berapa banyak baris yang akan dikembalikan, ulangi baris demi baris agar aman:
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
var_dump($row['likedFour']);
}