Tại sao lại var_dump(stmt['likedFour']);
return 's'
:
Vì bạn thiếu ký hiệu đô la trước stmt
, vì vậy PHP nghĩ rằng bạn đang cố truy cập vào hằng số stmt
thay vì biến $stmt
. Vì bạn chưa xác định hằng số đó, nên nó sẽ trở lại giả sử bạn đang cố truy cập vào chuỗi "stmt"
. Đối với chuỗi, các chỉ mục phải là số, vì vậy PHP sẽ đưa ra cảnh báo "Phần bù chuỗi bất hợp pháp" nhưng sẽ cố gắng sửa lỗi đó cho bạn bằng cách truyền 'likedFour'
thành một số nguyên (sẽ là 0
).
Do đó, var_dump(stmt['likedFour'])
có nghĩa giống hệt như var_dump("stmt"[0])
sang PHP, đó là lý do tại sao bạn nhận được đầu ra "s"
:ký tự đầu tiên từ "stmt"
.
Làm thế nào để có được kết quả mà bạn thực sự muốn:
Trước tiên, bạn cần truy xuất các hàng kết quả từ truy vấn của mình. $stmt
là mysqli_stmt
đối tượng mà bạn sử dụng để thực thi truy vấn và truy xuất kết quả, nó thực sự không phải là kết quả.
Để đỡ phải đau đầu trong tương lai, hãy luôn kiểm tra xem truy vấn của bạn có được thực thi thành công hay không trước khi cố gắng truy xuất kết quả. Sau đó tìm nạp hàng dữ liệu:
$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']);
}
Nếu bạn không biết có bao nhiêu hàng sẽ được trả về, hãy lặp lại chúng chỉ để an toàn:
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
var_dump($row['likedFour']);
}