【发布时间】:2012-03-02 09:51:51
【问题描述】:
我正在尝试在某些数据进入我的数据库之前对其进行转义,但我不断收到此错误:
Warning: mysql_real_escape_string(): Access denied for user
现在这通常表明我没有连接到数据库(它还声明(使用密码:NO))。
我对此有点困惑,因为当连接到数据库时,我有一个“死”子句,所以如果连接失败,我会被告知。所以我通过在我试图转义数据的同一个函数中运行一个简单的查询来测试这个理论,它工作得很好。
那么为什么逃生方法不能工作或无法连接到数据库。我确实注意到错误状态的用户不是我用来访问数据库的用户,它类似于“www-data@localhost”。是否尝试使用其他用户登录,如果是,为什么以及如何登录?因为我网站的另一个区域,转义功能工作得很好,我没有做任何特别的事情来使它工作,只是将代码添加到我的网页中。
感谢您的帮助。
还有其他方法可以清理我的代码吗?
好的,我们开始吧,当用户提交表单时,我使用 AJAX 来收集数据并将其放入一个 obj 以将其发布(JSON 编码)到这里的第一个 PHP 脚本:
此脚本检查所有数据,然后调用函数将其添加到数据库中
调用这个 Mysql 类来转义数据,然后向数据库添加一条新记录,当创建该类的实例时,它会连接到数据库:
第三个文件是常量,它保存了数据库的信息,如密码、用户等:
好些了吗?
再次感谢您的帮助。
【问题讨论】:
-
您似乎正在尝试在打开连接之前调用该功能。也许在您网站的其他工作区域中,您已经打开了连接..?
-
@bububaba 好吧,我对此进行了测试,我评论了转义数据的代码,并让代码运行了一个简单的 SELECT 查询,该查询返回的数据很好,因此我连接到了数据库。这就是它的奇怪之处。
-
使用错误中给出的用户名检查脚本中的 mysql_connect()。很可能,您在一开始就在某个地方提供了错误的凭据。
-
我认为现在可以肯定地说我们需要更多代码来提供帮助
标签: php mysql mysql-real-escape-string