Защо 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']);
}