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 回答