我不认为我的代码是问题,因为它在我的本地服务器上工作(编辑:对不起,如果这是一个错误的地方要求,但我不能自己移动到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');
答案 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()
,而是使用某些特定于驱动程序的转义/绑定功能。