在输入具有特殊字符“或”的数据时,Codeigniter中出现1064错误

时间:2014-02-19 07:19:16

标签: php sql

当我在artist_as字段中输入任何特殊字符时,我收到并出错。在输入具有特殊字符"'

的数据时,CodeIgniter中的错误编号为1064

这是我的型号代码:

$this->db->query("Delete from tv_cast where tv_id = '{$tvid}'");
if(array_key_exists('tv_cast_as_artist_id', $post)){
    $count = count($post['tv_cast_as_artist_id']);
    $i = 0;
    $this->db->query("Delete from tv_cast where tv_id = '{$tvid}'");
    while($i < $count){
        $this->db->query("Insert into tv_cast (tv_id, artist_id,artist_as)
                Values ('{$tvid}','{$post['tv_cast_as_artist_id'][$i]}','{$post['tv_cast_as_artist_as'][$i]}'
        )");
        $i++;
    }
}

我收到错误:

  

错误号码:1064

     

您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第2行“s Ex-Boyfriend' )”附近使用正确的语法

     

Insert into tv_cast (tv_id, artist_id,artist_as) Values ('29','7174','Rashmi's Ex-Boyfriend' )

     

文件名:/home/divazmed/public_html/design/models/admin_model.php

     

行号:612

2 个答案:

答案 0 :(得分:1)

您的artist_as字段似乎未正确转义。

使用类似:

$data = array(
   'tv_id' => $tvid ,
   'artist_id' => $post['tv_cast_as_artist_id'][$i] ,
   'artist_as' => $post['tv_cast_as_artist_as'][$i]
);

$this -> db -> insert('tv_cast', $data); 

您的所有值都将自动转义,从而产生更安全的查询等

您可以在此处阅读有关Codeigniter Active Record类的更多信息:

http://ellislab.com/codeigniter/user-guide/database/active_record.html#insert

答案 1 :(得分:0)

在mysql中添加数据: html_entities(mysql_real_escape_string($variable));

要在页面上打印,您可以使用: html_entity_decode(stripslashes($variable));