1

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

試してみるとecho $_POST['email'];正しいデータが得られますが、試してみるecho mysql_real_escape_string($_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 ("sampleemail@gmail.com")');

そして、これが私がデータベースに接続する方法です:

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

2 に答える 2

9

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

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

または、手がかりを得て、神々が意図したように準備されたステートメントを使用することを学びます。

于 2012-03-31T19:06:17.930 に答える
2

挿入コード(国立保護区のように隠している)は、プレーンなmysqlドライバーではなく、他のドライバーを使用していると思います。

つまり、を使用するべきではありませんmysql_real_escape_string()が、いくつかのドライバー固有のエスケープ/バインディング機能を使用する必要があります。

于 2012-03-31T19:09:39.933 に答える