Dit første problem er, at du ikke tjekkede hver kalder på fiasko, kun de få i starten. Begge store_result
og bind_result
kan også mislykkes.
Dit specifikke problem (når du har rettet det første) er, at du select *
for at få flere kolonner, men du binder kun én i resultatet. Det fremgår af fejlmeddelelsen du får fra bind_result
ring:
Hvis du ændrer select
sætning til noget som select id from ...
, vil du opdage, at det begynder at virke.
Men forudsat at du vil flere kolonner, bør du angive flere variabler i bindingen, sådan som:
$stmt = $db->prepare("SELECT col1, col2 FROM messages WHERE post_id = ?");
:
$ex = $stmt->bind_result($param1, $param2);
Du vil bemærke, at jeg ikke bruger select *
deroppe er det bedre at bruge eksplicit kolonnenavngivning i næsten alle situationer, så:
- du bliver ikke overrasket, når DB-skemaet ændres;
- du får kun de data, du har brug for;
- du kan kortlægge kolonner til resultatvariabler korrekt.
Stort set den eneste sted, jeg nogensinde har fundet ud af, at det er okay at bruge select *
er i DB analyseværktøjer, hvor du ønsker at få alt. Hvis du ved, hvad du vil have på forhånd, er det det, du skal bede om.