sql >> Database teknologi >  >> RDS >> Mysql

MYSQLI udarbejdet erklæring fortsætter uden output

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.



  1. forskel mellem localhost og postgres for vært i docker

  2. Sådan vælger du sidste 6 måneder fra nyhedstabel ved hjælp af MySQL

  3. EF 4, hvordan man tilføjer delklasser

  4. Overførsel af data mellem MySQL og Oracle-databaser