Имена столбцов в моей таблице указаны в UNICODE символах.Итак, эти символы могут быть установлены в качестве параметров?
Это SQL:
INSERT INTO सामान्य_ग्यान
SET मिति = :मिति, शीर्षक = :शीर्षक, विकल्प_क = :विकल्प_क, विकल्प_ख = :विकल्प_ख, विकल्प_ग = :विकल्प_ग,
विकल्प_घ = :विकल्प_घ, सही_जवाफ = :सही_जवाफ
И если я выполню этот запрос, он выдаст следующую ошибку.
Запрос вставки: 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;
}
}