Ich habe ein paar Fragen in den letzten Tagen gesehen, die mysqli
verwendet haben, aber wo die Antworten den Unterschied zwischen $stmt->execute()
und $db->query()
nicht erkannt haben.Mischen PHP mysqli Datenzugriffsfunktionen?
Wie ich es verstehe, gibt es zwei verschiedene Modelle für den Zugriff auf Ergebnisse in mysqli
.
Dies verwendet rohe SQL und erfordert den Programmierer die Eingabe zu entkommen SQL-Injection-Angriffe zu verhindern, aber erlaubt es den Programmierer, eine assoziative Array (oder ein einfaches Array) enthält column => value
Mappings abzurufen:
$result_set = $db->query("SAFE SQL QUERY HERE");
while ($row = $result_set->fetch_assoc()) {
# do something with $row['fieldname'];
}
Alternativ Sie tun dies, was schön Bindung von Parametern und Ergebnissen erlaubt, kann aber nicht (AFAIK) geben Sie jede Art von einfachen Array Ergebnis:
$stmt = $db-prepare("SQL QUERY WITH ? PLACEHOLDERS");
$stmt->bind_param("s", $input_variable);
$stmt->execute();
$stmt->bind_results($output_col1, $output_col2);
while ($stmt->fetch()) {
# do something with $output_col1 and $output_col2
}
Meine Frage ist - ist es eine Möglichkeit, mit mysqli
zu bekommen die einfache Array-Ausgabe, die im ersten Muster gezeigt wird, aber trotzdem sicher gebundene Eingabeparameter wie im zweiten Muster verwendet?
Ich kann nicht finden, dies zu tun (außer PDO
stattdessen verwenden!).
olafur - Ich habe Ihre Rechtschreibung Änderung rückgängig gemacht. "anerkannt" ist die Standard-englische Schreibweise. – Alnitak