Ich muss companyname (vom Benutzer über ein Formular angegeben) in meine mysql-Datenbank eingeben. Wenn ich
benutze %Vor%Ich bekomme einen Fehler
%Vor%Aber bei der Verwendung von
scheint alles in Ordnung zu sein %Vor%Was kann ich in solchen Fällen tun?
mysql_real_escape_string()
ist so konzipiert, dass Daten ohne Fehler in die Datenbank eingefügt werden können. (IE wie zum Beispiel das Entkommen von Schrägstrichen, damit es Ihren Code nicht unterbricht).
Sie sollten mysql_
oder mysqli_
functions verwenden, um Ihre Verbindungszeichenfolge zu finden. "mysqli" ist die objektorientierte Implementierung des mysql-Funktionssatzes, so dass die Funktionen im objektorientierten Stil aufgerufen werden. "mysql" ist prozedural. Ich würde vorschlagen, zu "mysqli" zu wechseln, weil ich glaube, dass es in zukünftigen Versionen von der Abwertung der "mysql" -Funktionen gesprochen hat.
Wenn Ihre Verbindungszeichenfolge lautet:
%Vor%verwende dann:
%Vor%Wenn es ist:
%Vor%verwende dann:
%Vor% Beide Funktionen haben nichts mit Formulardaten zu tun.
Sie müssen verwendet werden, um Zeichenfolgenliterale zu formatieren, die in die SQL-Abfrage only eingefügt wurden.
Diese Funktion gehört zu der SQL-Abfrage, nicht in welcher Form auch immer. Und sogar zu einem sehr begrenzten Teil der Abfrage - ein String-Literal.
Jedes Mal, wenn Sie ein String-Literal in die Abfrage einfügen (ehrlich gesagt, ein Teil der Daten in Anführungszeichen), sollte diese Funktion unbedingt verwendet werden.
Für den anderen Fall sollte es überhaupt nicht verwendet werden.
Was den Fehler betrifft, den Sie bekommen - es ist ziemlich selbsterklärend: Diese Funktion erwartet 2 Parameter, nicht einen. Übergeben Sie einfach die richtigen Parameter, wie in der Handbuchseite für diese Funktion angegeben, und Sie werden in Ordnung sein
Da die gesamte Erweiterung MySQL
veraltet ist , sollten Sie stattdessen die MySQLi
-Methoden verwenden, sie sind zukunftssicherer.
Beide Varianten sind in Ordnung * (Bitte sehen Sie sich mein Update an).
Wenn Sie mysql_connect
verwenden, sollten Sie bei mysql_real_escape_string()
bleiben und auch das Verbindungs-Handle übergeben.
Wenn Sie mysqli_connect
verwenden, sollten Sie bei mysqli_real_escape_string()
bleiben.
AKTUALISIEREN
Wie Jeffrey in den Kommentaren darauf hingewiesen hat, ist die Verwendung von mysql_
functions NICHT in Ordnung. Ich stimme dem zu. Ich habe gerade darauf hingewiesen, dass Sie die Funktion verwenden müssen, die von der MySQL-Erweiterung verwendet wird, die Sie verwenden.
Es kam zu mir, dass es nicht die Frage war, welche MySQL-Extension zu verwenden ist, sondern welche Funktion zum Entschlüsseln von Daten verwendet wird.
Wenn Sie mich fragen:
mysqli
oder PDO
, da mysql
nicht empfehlenswert und veraltet ist. Tags und Links php mysql mysqli mysql-real-escape-string