【问题标题】:CI SQL INSERT ERRORCI SQL 插入错误
【发布时间】:2011-09-17 08:31:03
【问题描述】:

错误号:1064

您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本,以便使用正确的语法 靠近 'Aventro'',''bc55825ec921b78c574576fbc6679cc346ee0494'',''8c0cf560bb77c28d6b7dd11' 在第 1 行

INSERT INTO 用户(用户名、密码、salt、电子邮件、user_created) 值(''Aventro'',''bc55825ec921b78c574576fbc6679cc346ee0494'',''8c0cf560bb77c28d6b7dd1135a1a94f2'',''john.anon3@gmail.com'', 现在())

文件名:C:\wamp\www\hol\system\database\DB_driver.php

行号:330

创建用户模型:

public function createuser($username, $password, $salt, $email)
{
    $password = sha1($password . $salt);

    $sql = "INSERT INTO users(username, password, salt, email, user_created) VALUES('".$this->db->escape($username)."','".$this->db->escape($password)."','".$this->db->escape($salt)."','".$this->db->escape($email)."', NOW())";

    if ($this->db->query($sql)) {
        return true;
    } else {
        return false;
    }
}

控制器(模型调用)

    $result = $this
    ->user_model
    ->createuser(
        $this->input->post('username'),
        $this->input->post('password'),
        $salt,
        $this->input->post('email'));

【问题讨论】:

    标签: php mysql sql codeigniter


    【解决方案1】:

    您的$this->db->escape() 返回用单引号括起来的字符串。请改用此查询:

    $sql = "INSERT INTO users(username, password, salt, email, user_created) VALUES(".$this->db->escape($username).",".$this->db->escape($password).",".$this->db->escape($salt).",".$this->db->escape($email).", NOW())";
    

    或者从$this->db->escape() 中删除附件 - 我认为这样会更好。

    【讨论】:

      【解决方案2】:

      查询中的双引号实际上是两个撇号。

      在它们之间插入空格以显示:''Aventro''

      可能您的 $db->e​​scape 方法会返回一个带引号的带引号的字符串。

      检查您的转义函数,看看它是否这样做,并将数据放在不带引号的查询中。

      【讨论】:

        【解决方案3】:
        function fetch_all($table_name,$field_name,$order){
            $query = $this->db->query("select * from {PRE}".$table_name." where 1 order by `".$field_name."` ".$order);
        
            $result['result_num'] = $query->num_rows();
            $result['result_log'] = $query->result();
            return $result;
        }
        
        
        
        function fetch_editdata($value,$table_name,$idname){
            $query = $this->db->query("select * from {PRE}".$table_name." where `".$idname."` = '".$value."'");
        
            $result['result_log'] = $query->row();
            return $result;
        }
        
        
        function edit_data($data,$table_name,$id){
            $i = 1;
            $query = "UPDATE {PRE}".$table_name." SET";
            foreach($data as $key=>$value){
                if($i < count($data)){
                    $query = $query . "`".$key."` = '".addslashes(trim($value))."',";
                }else{
                    $query = $query . "`".$key."` = '".addslashes(trim($value))."'";
                }
                $i++;
            }
            foreach($id as $k=>$val){
                $query = $query . "WHERE `".$k."` = '".$val."'";
                $insert_id = $val;
            }
            $this->db->query($query);
            return $insert_id;
        }
        
        
        function adddata($value,$table_name){
            $query = "INSERT INTO {PRE}".$table_name." SET";
            $i = 1;
            foreach($value as $key => $val){
                if($i < count($value)){
                    $query = $query . "`".$key."` = '".addslashes(trim($val))."',";
                }else{
                    $query = $query . "`".$key."` = '".addslashes(trim($val))."'";
                }
                $i++;
            }
            $this->db->query($query);
            $insert_id = $this->db->insert_id();
        
            return $insert_id;
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-04-28
          • 2013-05-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-09-03
          • 2016-12-14
          相关资源
          最近更新 更多