2012-03-31 6 views
1

Ich glaube nicht, mein Code ist das Problem, weil es auf meinem lokalen Server funktioniert (EDIT: Entschuldigung, wenn dies der falsche Ort war zu fragen, aber ich kann nicht selbst zu ServerFault wechseln. Auf dem Remote-Server kann ich jedoch mysql_real_escape_string() nicht funktionieren. Die Datenbankverbindung ist funktioniert, und ich verbinde vor dem Aufruf der Funktion. Wenn ich echo $_POST['email']; versuche, bekomme ich die richtigen Daten, aber wenn ich versuche, echo mysql_real_escape_string($_POST['email']); bekomme ich nichts.mysql_real_escape_string() funktioniert nicht, obwohl ich mit der Datenbank verbunden bin

Hier erhalte ich, wenn ich Fehler verlassen Berichterstattung über:

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: [2002] No such file or directory (trying to connect via unix://please_see_the_faq) in /f5/mysite/public/email_results.php on line 11 

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: No such file or directory in /f5/mysite/public/email_results.php on line 11 

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /f5/mysite/public/email_results.php on line 11 

Ist es möglich, dass etwas mit der PHP-Konfiguration ist der Grund dafür? Ich hoste mit NearlyFreeSpeech, wenn es darauf ankommt.

Hier ist mein Insert Code:

$db->query('INSERT INTO emails VALUES ("[email protected]")'); 

Und hier ist, wie ich in die Datenbank bin Anschluss:

@ $db = new mysqli('mysite.db', 'wizard', '(password)', 'mysite'); 
+14

Ich hörte auf zu lesen nach: "Ich weiß, dass mein Code nicht das Problem ist". – PeeHaa

+1

Haben Sie einen Link zu der Datenbank, die funktioniert? mysql_real_escape_string benötigt einen aktiven Link. Nach Ihrer dritten Warnung sieht das so aus. –

+0

OK. Gibt es anderswo wo ich nach Konfigurationsproblemen fragen sollte? – user460847

Antwort

8

Sie sehen, dass der erste Fehler ... der Spruch „versucht, über eine Verbindung unix://please_see_the_faq "? Das bedeutet, dass PHP versucht, sich mit Ihrem MySQL-Server zu verbinden (das gleiche wie über mysql_connect ohne Parameter), aber es hat nicht die richtigen Parameter zum Verbinden. Es weiß nicht einmal, wo der Datenbank-Socket ist.

Wenn Sie keine Verbindung zur Datenbank mit mysql_connect herstellen, sollten Sie nicht mysql_real_escape_string verwenden. Wenn Sie dies tun, wird es versuchen, sich mit der Datenbank selbst zu verbinden, indem Sie die Standardparameter in php.ini verwenden (deren Ergebnisse Sie gerade sehen). Es sieht so aus, als ob Sie mysqli verwenden, das eine ganz andere Erweiterung ist und eine eigene Escape-Funktion hat - mysqli_real_escape_string. Benutze das stattdessen.

Oder, erhalten Sie einen Hinweis und lernen Sie, vorbereitete Aussagen zu verwenden, wie die Götter beabsichtigten.

+0

Ich habe das gelesen, aber ich verwende, was NearlyFreeSpeech als Hostname empfiehlt, und das Einfügen von Daten in die Datenbank funktioniert. – user460847

+1

Sie sollten dann wahrscheinlich nicht mysql_real_escape_string verwenden, sondern nach mysql_connect (nicht mysqli_connect, nicht 'new PDO', keine anderen Sachen), sonst versucht es zu öffnen Die Verbindung selbst mit den Standardparametern der Verbindung in der php.ini (die mit ziemlicher Sicherheit nicht das sind, was Sie wollen, und tatsächlich ist, was Ihr aktuelles Problem verursacht). – cHao

+0

Vielen Dank! Ich habe mysql_connect benutzt und es hat funktioniert. – user460847

2

Ich nehme an, dass Ihr Einfügecode (den Sie verstecken, als wäre es Nationalreserve) jeden anderen Treiber verwendet, nicht den einfachen mysql.

Das bedeutet, dass Sie nicht mysql_real_escape_string(), aber einige treiberspezifische Escaping/Binding-Funktion verwenden sollten.

+0

Ich habe den Code eingefügt - ich versuche nicht, es zu verstecken, merkte nur nicht, dass es wichtig war. – user460847

+0

also, lesen Sie meine Antwort –

+1

OMG, das ist die Antwort bereits –

Verwandte Themen