php - mysql_real_escape_string() 不工作,即使我已连接到数据库

标签 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');

最佳答案

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

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

或者,获取线索并学习按照上帝的意图使用准备好的语句。

关于php - mysql_real_escape_string() 不工作,即使我已连接到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9958663/

相关文章:

php - mysqli 查询问题。 mysqli_real_escape_string 错误

php - 如何检查 PHP 字符串作为查询参数是否有效

MySQL存储过程问题。抛出警告。想不通为什么?

mysql - Laravel 查询生成器中的 SQL 查询 GROUP BY 问题

php - 使用 CDbCriteria 根据值数组查询数据库

javascript - 如何将 js 字符串从 chrome 扩展内容脚本发送到 php

mysql - Magento 搜索未显示相关结果

PHP MYSQL文件内容转义问题

java - Jakarta commons HTTPClient 无法使用 php 在我的 apache 服务器上发送发布请求

php - 发送 SIGTERM 时,子进程是否关闭 mysql 连接?