mysql_real_escape_string()无效,即使我已连接到数据库

时间:2012-03-31 18:45:37

标签: php mysql mysql-real-escape-string nearlyfreespeech

我不认为我的代码是问题,因为它在我的本地服务器上工作(编辑:对不起,如果这是一个错误的地方要求,但我不能自己移动到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');

2 个答案:

答案 0 :(得分:9)

你看到第一个错误......那个说“试图通过unix://please_see_the_faq连接”的错误?这意味着PHP正在尝试连接到您的MySQL服务器(与没有参数的mysql_connect相同),但它没有正确的连接参数。它甚至不知道数据库套接字的位置。

如果您未使用mysql_connect连接到数据库,则不应使用mysql_real_escape_string。如果你这样做,那么它将尝试使用php.ini中的默认参数(你当前看到的结果)自己连接到数据库。看起来你正在使用mysqli,它是一个完全不同的扩展,并且有自己的转义函数 - mysqli_real_escape_string。请改用它。

或者,获得线索并学会使用准备好的陈述作为众神的意图。

答案 1 :(得分:2)

我认为你的插入代码(你隐藏它就好像是National Reserve)正在使用其他驱动程序,而不是普通的mysql。

这意味着您不应该使用mysql_real_escape_string(),而是使用某些特定于驱动程序的转义/绑定功能。