53 Stimmen

Wie kann man eine MySQLi-Vorbereitungserklärung echo?

Ich spiele im Moment mit MySQLi herum, ich versuche herauszufinden, wie alles funktioniert. In meinen aktuellen Projekten gebe ich beim Codieren immer gerne einen Abfrage-String aus, nur um sicherzustellen, dass alles korrekt ist, und um meinen Code schnell zu debuggen. Aber... wie kann ich das mit einer vorbereiteten MySQLi-Anweisung machen?

Beispiel:

$id = 1;
$baz = 'something';

if ($stmt = $mysqli->prepare("SELECT foo FROM bar WHERE id=? AND baz=?")) {
  $stmt->bind_param('is',$id,$baz);
  // wie kann ich diese vorbereitete Abfrage vor der eigentlichen Ausführung anzeigen?
  // $stmt->execute();
}

Ich habe diese Liste durchgesehen (http://www.php.net/mysqli), aber ohne Erfolg.

EDIT

Nun, wenn es nicht möglich ist, dies von innerhalb von MySQLi aus zu tun, bleibe ich vielleicht bei etwas wie diesem:

function preparedQuery($sql,$params) {
  for ($i=0; $i

`

Weit davon entfernt, perfekt zu sein, da es immer noch ziemlich redundant ist - etwas, das ich vermeiden wollte - und es gibt mir auch keine Vorstellung davon, was MySQLi mit den Daten macht. Aber ich denke, auf diese Weise kann ich schnell sehen, ob alle Daten vorhanden sind und sich am richtigen Ort befinden, und es wird mir etwas Zeit ersparen im Vergleich dazu, die Variablen manuell in die Abfrage einzufügen - das kann bei vielen Variablen mühsam sein.

`

-1voto

l00sed Punkte 19

Ich konnte var_dump() verwenden, um zumindest ein wenig mehr Informationen über das mysqli_stmt zu erhalten:

  $postmeta_sql = "INSERT INTO $db_new.wp_postmeta (post_id, meta_key, meta_value) VALUES (?, ?, ?)";
  $stmt = $new_conn->prepare($postmeta_sql);
  $stmt->bind_param("sss", $post_id, $meta_key, $meta_value);
  echo var_dump($stmt);
  $stmt->execute();
  $stmt->close();

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X