【问题标题】:mysql_real_escape_string and Access denied for user 'ODBC'@'localhost'mysql_real_escape_string 和用户 'ODBC'@'localhost' 的访问被拒绝
【发布时间】:2011-02-01 22:19:36
【问题描述】:

我知道我需要连接到数据库才能使 mysql_real_escape_string 工作,但不太确定如何工作。

我使用这个函数在表格中插入行。

function insert_db($conn, $table_name, $array){

    //$array = array_map( 'mysql_real_escape_string' , $db ); //ERROR! 

    # Create the SQL Query
    $query = 'INSERT INTO `'.$table_name.'` '.
             '( `'.implode( '` , `' , array_keys( $array ) ).'` ) '.
             'VALUES '.
             '( "'.implode( '" , "' , $array ).'" )';

    $result = $conn->query($query);             
    if (!$result){ trigger_error("mysql error: ".mysql_errno($result) . ": " . mysql_error($result));  }
}

以这样的数组为例:

$db["to"] = $to;
$db["from"] = $username; 
$db["message"] = $message;
$db["time"] = date("Y-m-d H:i:s", strtotime("+0 minutes"));

insert_db($conn, "inbox", $db)

其中数组键表示表中的列。

但我得到这个错误:

2011-02-01 22:21:29 : mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) 

有人问$conn来自哪里:

$conn = db_connect();

if( ! function_exists('db_connect')){

    function db_connect() {
    $result = new mysqli('localhost', 'xxx', 'xxx', 'xxx');
    if (!$result) {
    die(msg(0,"Could not connect to database server"));
    } else {
    return $result;
    }
    }

}

【问题讨论】:

  • 您的代码中的$conn 来自哪里?看起来它不是一个连接(由mysql_connect 创建)。如果不先打开与数据库服务器的连接,就无法向数据库服务器发送查询(或转义字符串或其他任何内容)。

标签: php mysql mysql-error-1045


【解决方案1】:

您的连接正在使用 mysqli (i),因此您不能使用 mysql* 函数,您需要 mysqli_real_escape_string

【讨论】:

  • 关闭,但mysqli_real_escape_string() expects exactly 2 parameters, 1 given
  • @ganjan,不,他没有调用 mysqli_real_escape_string,他正在尝试使用 mysql_real_escape_string(),这是问题所在
  • ganjan 问了这个问题,所以我知道,但是当我将mysql_real_escape_string() 更改为mysqli_real_escape_string 时,我仍然收到错误(如上所述)。
  • @ganjan 它们不相同,你不能只是交换,i 有 2 个参数。我从来没有说过要在不考虑差异的情况下用另一个替换。
  • @ganjan:与往常一样,您的救赎可以在文档中找到:php.net/mysqli_real_escape_string
猜你喜欢
  • 2016-04-26
  • 1970-01-01
  • 2013-08-25
  • 1970-01-01
  • 1970-01-01
  • 2013-07-28
  • 2023-03-20
  • 2021-07-11
相关资源
最近更新 更多