Proč var_dump(stmt['likedFour']);
vrátit 's'
:
Protože před stmt
chybí znak dolaru , takže PHP si myslí, že se pokoušíte o přístup k konstantě stmt
místo proměnné $stmt
. Protože jste tuto konstantu nedefinovali, vrátí se zpět k předpokladu, že se pokoušíte získat přístup k řetězci "stmt"
. U řetězců musí být indexy numerické, takže PHP by vám mělo házet varování "Illegal string offset", ale pokusí se to za vás opravit přetypováním 'likedFour'
na celé číslo (což bude 0
).
Proto var_dump(stmt['likedFour'])
znamená přesně to samé jako var_dump("stmt"[0])
do PHP, což je důvod, proč získáváte výstup "s"
:první znak z "stmt"
.
Jak ve skutečnosti dosáhnout výsledku chtít:
Nejprve musíte načíst výsledné řádky z dotazu. $stmt
je mysqli_stmt
objekt, který používáte k provedení dotazu a načtení výsledků, ve skutečnosti to není samotný výsledek.
Chcete-li si v budoucnu ušetřit bolesti hlavy, vždy před pokusem o načtení výsledků zkontrolujte, zda byl váš dotaz dokonce úspěšně proveden. Poté načtěte řádek dat:
$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']);
}
Pokud nevíte, kolik řádků bude vráceno, projděte je pro jistotu:
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
var_dump($row['likedFour']);
}