2012-03-31 12 views
1

私のコードはローカルサーバで動作しているので問題はないと思います(編集:これは間違った場所であれば申し訳ありませんが、 ServerFaultに自分で移動しないでください)。リモートサーバーでは、私はmysql_real_escape_string()を動作させることができません。データベース接続です。この関数を呼び出す前に接続しています。データベースに接続していてもmysql_real_escape_string()が動作しません

私はecho $_POST['email'];を試してみると正しいデータが得られますが、試してみると何も得られません。

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 

それがPHPの設定で何かがこれを引き起こしている可能性がある:

は、ここで私は上のエラー報告を残すとき私が得るのか? NearlyFreeSpeechでホスティングしています(問題がある場合)。私は、データベースに接続していますか

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

そして、ここにある:

は、ここに私の挿入コードです

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

「私のコードは問題ではないことを知っています。 – PeeHaa

+1

作業中のデータベースへのリンクがありますか? mysql_real_escape_stringにはアクティブなリンクが必要です。あなたの3番目の警告から、そうでないように見えます。 –

+0

OK。私は設定上の問題について尋ねる必要がある別の場所がありますか? – user460847

答えて

8

あなたは、最初のエラーが... 1を経由して接続しよう」と言っていることがわかりunix://please_see_the_faq "?これは、PHPがMySQLサーバに接続しようとしていることを意味します(パラメータがない場合はmysql_connectと同じですが)、接続する正しいパラメータがありません。データベースソケットがどこにあるのかも分かりません。

mysql_connectを使用してデータベースに接続していない場合は、mysql_real_escape_stringを使用しないでください。そうした場合、php.iniのデフォルトのパラメータを使用してデータベースに接続しようとします(その結果は現在表示されています)。まったく異なる拡張機能であるmysqliを使用しているようで、独自のエスケープ機能 - mysqli_real_escape_stringがあります。その代わりに使用してください。

または、手がかりを得て、意図された神を意図したステートメントを使用する方法を学んでください。

+0

私はそれを読んだが、私はNearlyFreeSpeechがホスト名として推奨しているものを使用しており、データをデータベースに挿入することができます。 – user460847

+1

あなたは 'mysql_real_escape_string'を使ってはいけません。mysql_connect(mysqli_connect'ではなく、' new PDO'ではなく他のものではなく)の後で使うべきです。 php.iniのデフォルトの接続パラメータを使用して独自の接続を行います(これはほとんどあなたが望むものではなく、実際にあなたの現在の問題を引き起こしています)。 – cHao

+0

ありがとう!私はmysql_connectを使用していました。 – user460847

2

あなたの挿入コード(National Reserveのように隠れている)は、他のドライバを使用しています。プレーンなmysqlではありません。

つまり、mysql_real_escape_string()は使用しないでください。ただし、ドライバ固有のエスケープ/バインド機能は使用しないでください。

+0

私は挿入コードを追加しました - それを隠そうとするのではなく、それが重要だと気付かなかっただけです。 – user460847

+0

そう、私の答えを読む –

+1

OMG、これはすでに答えです –

関連する問題