我的表的列名是unicode字符。那么,这些字符可以设置为参数吗?
这是sql:
INSERT INTO सामान्य_ग्यान
SET मिति = :मिति, शीर्षक = :शीर्षक, विकल्प_क = :विकल्प_क, विकल्प_ख = :विकल्प_ख, विकल्प_ग = :विकल्प_ग,
विकल्प_घ = :विकल्प_घ, सही_जवाफ = :सही_जवाफ
如果我运行这个查询,它会抛出以下错误。
insert query:sqlstate[42000]:语法错误或访问冲突:1064您的sql语法有错误;查看与您的mariadb服务器版本相对应的手册,以获取正确的语法 :मिति, शीर्षक = :शीर्षक, विकल्प_क
'在第1行
这是我的插入代码:
final protected function insert($data, $is_die = false){
try {
$this->sql = "INSERT INTO ";
if (!isset($this->table) || empty($this->table)) {
throw new Exception("Table not set");
}
$this->sql .= $this->table;
$this->sql .= " SET ";
if (isset($data) && !empty($data)) {
if (is_array($data)) {
$temp = array();
foreach ($data as $column_name => $value) {
$str = $column_name." = :".$column_name;
$temp[] = $str;
}
$this->sql .= implode(', ', $temp);
} else {
$this->sql .= $data;
}
}
$this->stmt = $this->conn->prepare($this->sql);
if (isset($data) && !empty($data) && is_array($data)) {
foreach ($data as $column_name => $value) {
if (is_int($value)) {
$param = PDO::PARAM_INT;
} elseif (is_bool($value)) {
$param = PDO::PARAM_BOOL;
} elseif (is_null($value)) {
$value = null;
$param = PDO::PARAM_INT;
} else {
$param = PDO::PARAM_STR;
}
if ($param) {
$this->stmt->bindValue(":".$column_name, $value, $param);
}
}
}
if ($is_die) {
debugger($this->sql, true);
echo $this->sql;
}
/*error*/
$this->stmt->execute();
/*error*/
return $this->conn->lastInsertId();
} catch (PDOException $e) {
error_log(
date('Y-m-d h:i:s A').", Insert Query: ".$e->getMessage()."\r\n"
, 3, ERROR_PATH.'error.log');
return false;
} catch (Exception $e) {
error_log(
date('Y-m-d h:i:s A').", General: ".$e->getMessage()."\r\n"
, 3, ERROR_PATH.'/error.log');
return false;
}
}
暂无答案!
目前还没有任何答案,快来回答吧!