mysql_real_escape_string和访问被拒绝用户'ODBC'@'localhost'

时间:2011-02-01 22:19:37

标签: php mysql mysql-error-1045

我知道我需要连接到db才能使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;
    }
    }

}

1 个答案:

答案 0 :(得分:5)

你的连接正在使用mysqli( i )所以你不能使用mysql *函数,你想要mysqli_real_escape_string