gpt4 book ai didi

php - MySQLi 和 mysql_real_escape_string() 错误

转载 作者:可可西里 更新时间:2023-11-01 06:32:10 24 4
gpt4 key购买 nike

我正在使用 OOP MySQLi 连接到我的数据库。我已经检查了我的凭据,一切顺利。

    $mysqli = new mysqli(MYSQL_HOST, MYSQL_USER, MYSQL_PASS, MYSQL_DB) or die('There was a problem connecting to the database.');

if (mysqli_connect_errno()) {
printf("Can't connect to MySQL Server. Errorcode: %s\n", mysqli_connect_error());
exit;
}

if ($result = $mysqli->query('SELECT * FROM places WHERE place_id=' . mysql_real_escape_string($_GET['id']))) {
while( $row = $result->fetch_assoc() ){
printf("%s (%s)\n", $row['name'], $row['place_id']);
}
$result->close();
}

$mysqli->close();

此代码产生错误:

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access
denied for user '-removed-'@'localhost' (using password: NO) in
/var/www/vhosts/communr.com/httpdocs/pbd/places.php on line 396

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to
the server could not be established in
/var/www/vhosts/communr.com/httpdocs/pbd/places.php on line 396

我不明白为什么会出现这些错误。当我最近移动服务器时,它们开始显示。我正在查询之前建立一个 SQL 连接。

你们都认为我的新服务器上的某些设置可能会搞砸吗?

谢谢!

最佳答案

mysql_real_escape_string 需要通过 mysql_connect 建立连接才能工作。 $mysqli->real_escape_string 需要一个 mysqli 对象才能工作。所以,

使用MySQli::real_escape_string相反:

'SELECT * FROM places WHERE place_id='.$mysqli->real_escape_string($_GET['id']); 

但请注意,为了安全起见,您需要引用它:

'SELECT * FROM places WHERE place_id=\''.$mysqli->real_escape_string($_GET['id']).'\''; 

但是,因为它看起来像一个整数,所以你应该这样转换它而不是转义它:

'SELECT * FROM places WHERE place_id='.(int) $_GET['id']; 

关于php - MySQLi 和 mysql_real_escape_string() 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5080953/

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