【发布时间】: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