Dlaczego var_dump(stmt['likedFour']);
zwróć 's'
:
Ponieważ brakuje Ci znaku dolara przed stmt
, więc PHP myśli, że próbujesz uzyskać dostęp do stałej stmt
zamiast zmiennej $stmt
. Ponieważ nie zdefiniowałeś tej stałej, wrócimy do założenia, że próbujesz uzyskać dostęp do ciągu "stmt"
. W przypadku łańcuchów indeksy muszą być numeryczne, więc PHP powinno rzucać ostrzeżenie „Niedozwolone przesunięcie ciągu”, ale spróbuje to naprawić, rzutując 'likedFour'
na liczbę całkowitą (która będzie wynosić 0
).
Dlatego var_dump(stmt['likedFour'])
oznacza dokładnie to samo, co var_dump("stmt"[0])
do PHP, dlatego otrzymujesz wynik "s"
:pierwszy znak z "stmt"
.
Jak uzyskać wynik faktycznie chcesz:
Najpierw musisz pobrać wynikowe wiersze z zapytania. $stmt
jest mysqli_stmt
obiekt, którego używasz do wykonania zapytania i pobrania wyników, nie jest w rzeczywistości samym wynikiem.
Aby oszczędzić sobie bólu głowy w przyszłości, zawsze sprawdzaj, czy zapytanie zostało wykonane pomyślnie, zanim spróbujesz pobrać wyniki. Następnie pobierz wiersz danych:
$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']);
}
Jeśli nie wiesz, ile wierszy zostanie zwróconych, przejrzyj je na wszelki wypadek:
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
var_dump($row['likedFour']);
}