我不认为我的代码有问题,因为它在我的本地服务器上运行(编辑:抱歉,如果问错了地方,但我不能自己转移到 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/