Ditt första problem är att du inte kontrollerade varje uppmaning till misslyckande, bara de få i början. Båda store_result
och bind_result
kan också misslyckas.
Ditt specifika problem (när du har fixat det första) är att du gör select *
för att få flera kolumner men du binder bara en i resultatet. Det framgår av felmeddelandet du får från bind_result
ring:
Om du ändrar select
uttalande till något som select id from ...
, kommer du att upptäcka att det börjar fungera.
Men förutsatt att du vill fler kolumner bör du ange fler variabler i bindningen, ungefär som:
$stmt = $db->prepare("SELECT col1, col2 FROM messages WHERE post_id = ?");
:
$ex = $stmt->bind_result($param1, $param2);
Du kommer att märka att jag inte använder select *
där uppe är det bättre att använda explicit kolumnnamn i nästan alla situationer så att:
- du blir inte förvånad när DB-schemat ändras;
- du får bara den data du behöver;
- du kan mappa kolumner till resultatvariabler korrekt.
I stort sett den enda plats jag någonsin har funnit att det är okej att använda select *
finns i DB analysverktyg där du vill få allt. Om du vet vad du vill ha i förväg är det vad du ska fråga efter.