Frage

Sagen Sie, ich möchte in Name, Adresse, Stadt, Bundesstaat, Zip -Werte $ name, $ adresse usw. einfügen .....

Wie kann ich rennen? mysql_real_escape_string auf jedem der Variablen vor dem Einfügen. Es muss eine Foreach oder Schleife geben oder während der Methode, anstatt jede Variable zu schreiben, oder?

Danke für die Hilfe.

Tom

Also wenn ich habe

 $data = array($address, $city, $name);
 array_map('mysql_real_escape_string', $data);

und

$columns = "name, address, city, state, zip";
$count = $dbh->exec("INSERT INTO customer($columns) VALUES ($data)");

Ich bekomme eine Menge Fehler.

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'root'@'localhost' (using password: NO) in /Users/tommyscott45/Sites/experiment/result.php on line 23

was jetzt?

War es hilfreich?

Lösung

Ein Datenbankfehler ist beim Versuch aufgetreten, aufzurufen mysql_real_escape_string und ich sehe, dass du benutzt $dbh->exec() Um die Abfrage auszuführen. Dies deutet darauf hin, dass Sie eine Verbindung zur Datenbank mit PDO herstellen, also sollten Sie lieber verwenden PDO::quote Anstatt von mysql_real_escape_string.

Darüber hinaus wäre, wie andere bereits erwähnt haben, ein besserer Weg, um Ihr Problem zu lösen, darin, vorbereitete Aussagen zu verwenden und PDO::prepare.

Andere Tipps

Sie verwenden Sprintf.

Zum Beispiel

$query = sprintf("INSERT into 
                  TABLE name = '%s', address = '%s', city = '%s'",
                 mysqli_escape_string($link, $name), 
                 mysqli_escape_string($link, $address), 
                 mysqli_escape_string($link, $city) );

Oder ist das nicht genau das, wonach Sie gesucht haben; Eine Möglichkeit, immer wieder "mysqli_escape_string" zu tippen.

Das sollte funktionieren.

$data = array($address, $city, $name);
array_map('mysql_real_escape_string', $data);

Aber Sie sollten die MySQL -Erweiterung wirklich nicht mehr verwenden. Sich ansehen Pdo oder Mysqli und ihre Unterstützung für "vorbereitete Aussagen".

Sie haben mehrere Probleme.

Erstens müssen Sie die Ausgabe von zuweisen array_map() zu einer Variablen, da sie keine Umwandlung in der Stelle ausführt. Dann müssen Sie es wieder in eine Zeichenfolge implodieren.

 $data = "'".implode("', '", array_map('mysql_real_escape_string', $data))."'";

Das größere Problem besteht darin, dass Sie SQL von Hand zusammenstellen, anstatt eine Datenzugriffsschicht zu verwenden, die die Informationen, die Sie speichern möchten, ihr Wissen darüber, wo Sie sie speichern möchten, aufnehmen möchten, um eine korrekte SQL -Anweisung zusammenzustellen, mit ordnungsgemäßem Zitat und alles.

Dies ist auch der Anstoß hinter den Vorschlägen zur Verwendung vorbereiteter Aussagen, aber nur die Verwendung vorbereiteter Aussagen ist nur die Hälfte der Lösung, da Sie immer noch SQL -Anweisungen zusammenstellen würden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top