gpt4 book ai didi

php - 使用 mysql_real_escape_string() 时访问被拒绝错误

转载 作者:可可西里 更新时间:2023-11-01 07:13:49 24 4
gpt4 key购买 nike

我试图在数据进入我的数据库之前转义一些数据,但我一直收到这个错误:

Warning: mysql_real_escape_string(): Access denied for user 

现在这通常表明我没有连接到数据库(它还声明(使用密码:NO))。

我对此有点困惑,因为当连接到数据库时,我有一个“死”子句,所以如果连接失败,我会被告知。因此,我通过在试图转义数据的同一个函数中运行一个简单的查询来测试这个理论,它工作得很好。

那么到底为什么转义方法不起作用或无法连接到数据库。我注意到错误状态的用户不是我用来访问数据库的用户,它类似于“www-data@localhost”。是否可以尝试使用不同的用户登录,如果是,为什么以及如何登录?因为在我网站的另一个区域,转义功能工作得很好,我没有做任何特别的事情来让它工作,只是将代码添加到我的网页中。

感谢您的帮助。

还有其他方法可以净化我的代码吗?

好的,我们开始吧,当用户提交表单时,我使用 AJAX 收集数据并将其放入对象中以将其发布(JSON 编码)到此处的第一个 PHP 脚本:

http://codepad.org/kGPljN4I

此脚本检查所有数据是否存在,然后调用一个函数将其添加到数据库

调用这个 Mysql 类来转义数据,然后将新记录添加到数据库中,当创建该类的实例时,它会连接到数据库:

http://codepad.org/wwGNrTJm

第三个文件是常量,它包含数据库的信息,如密码、用户等:

http://codepad.org/dl0QQbi9

好点了吗?

再次感谢您的帮助。

最佳答案

问题是您已经使用 MySQLi 建立了连接,但随后调用了 mysql_real_escape_string()。你打算调用 mysqli_real_escape_string()无论是在过程上下文中,还是在面向对象的上下文中。

class Mysql 
{
private $conn;

function __construct()
{

$this->conn = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME) or
die('No Connection to database!');
}

function add_non_member($data)
{
$email = $data->email;

// Procedural call
$san_email = mysqli_real_escape_string($this->conn, $email);

// Or OO call (recommended)
$san_email = $this->conn->real_escape_string($email);

// etc...
}

// etc...;
}

关于php - 使用 mysql_real_escape_string() 时访问被拒绝错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9531146/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com