sql >> Databáze >  >> RDS >> Mysql

Všechny hodnoty ='s' v tabulce v chybě PHP

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']);
}



  1. Proč není XAMPP vhodný pro výrobu?

  2. Vyloučení nepodporovaných tabulek k zachycení službou Oracle Streams

  3. Jak funguje TIMEDIFF() v MariaDB

  4. Čtyři věci, které jste nevěděli o Amazon Aurora