sql >> Databasteknik >  >> RDS >> Mysql

Alla värden ='s' i tabellen i PHP-fel

Varför gör var_dump(stmt['likedFour']); returnera 's' :

Eftersom du saknar dollartecknet före stmt , så PHP tror att du försöker komma åt konstanten stmt istället för variabeln $stmt . Eftersom du inte har definierat den konstanten kommer den att falla tillbaka till att anta att du försöker komma åt strängen "stmt" . För strängar måste index vara numeriska så PHP borde ge dig en "Olaglig strängförskjutning"-varning men kommer att försöka fixa det åt dig genom att casta 'likedFour' till ett heltal (som blir 0 ).

Därför var_dump(stmt['likedFour']) betyder exakt samma sak som var_dump("stmt"[0]) till PHP, vilket är anledningen till att du får utdata "s" :det första tecknet från "stmt" .

Hur får du det resultat du faktiskt vill ha:

Du måste först hämta de resulterande raderna från din fråga. $stmt är mysqli_stmt objekt som du använder för att köra frågan och hämta resultaten, det är faktiskt inte själva resultatet.

För att spara dig själv huvudvärk i framtiden, kontrollera alltid om din fråga ens har körts framgångsrikt innan du försöker hämta resultaten. Hämta sedan raden med data:

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

Om du inte vet hur många rader som kommer att returneras, gå igenom dem för säkerhets skull:

$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
    var_dump($row['likedFour']);
}



  1. Anropa pusher när mysql har ändrats

  2. Hur man hittar datumformatet som används i den aktuella sessionen i SQL Server (T-SQL)

  3. läser utf-8-innehåll från mysql-tabellen

  4. Kartlägg ett PostGIS-geometripunktfält med Hibernate on Spring Boot