CodeIgniter 更新和插入数据库时的进行数据转义

一、解决方法:
1 插入数据时,使用CodeIgniterd的Active Record模式的set方法,set()接受可选的第三个参数$escape,如果此参数被设置为FALSE,就可以阻止数据被转义,该参数的默认值是TRUE
2 更新数据时,所有的值会被自动转义,以便生成安全的查询

二、示例:
示例1:
$this->db->set(‘name‘, $name);
$this->db->insert(‘mytable‘);

示例2:
$this->db->set(‘name‘, $name);
$this->db->set(‘age‘, ‘age+1‘);
$this->db->set(‘status‘, $status);
$this->db->insert(‘mytable);

示例3:
$array = array(‘name‘=>$name, ‘title‘=>$title, ‘status‘=>$status);
$this->db->set($array);
$this->db->insert(‘mytable);

示例4:
/*
class Myclass{

var $title = ‘My Title‘,
var $content = ‘My Content‘,
var $date = ‘My Date‘;

}
*/
$object = new Myclass;
$this->db->set($object);
$this->db->insert(“mytable”);

三、set方法的源码:

/**
 * The "set" function.  Allows key/value pairs to be set for inserting or updating
 *
 * @param   mixed
 * @param   string
 * @param   boolean
 * @return  object
 */
public function set($key, $value = ‘‘, $escape = TRUE)
    {
    $key = $this->_object_to_array($key);

    if ( ! is_array($key))
    {
        $key = array($key => $value);
    }

    foreach ($key as $k => $v)
    {
        if ($escape === FALSE)
        {
            $this->ar_set[$this->_protect_identifiers($k)] = $v;
        }
        else
        {
            $this->ar_set[$this->_protect_identifiers($k, FALSE, TRUE)] = $this->escape($v);
        }
    }

    return $this;
}
时间: 2024-08-13 07:25:10

CodeIgniter 更新和插入数据库时的进行数据转义的相关文章

使用spring rest插入数据库时发生了 前言中不允许有内容 错误

该错误一般是编码带来的问题,比如在请求post的时候,使用了application/x-www-form-urlencoded的content type 那么请求传过来的string则需要用urlDecoder进行decode.否则就会报上述错误 body = java.net.URLDecoder.decode(body, "UTF-8"); Source source = new StreamSource(new StringReader(body)); 使用spring rest

插入数据库 每次1000条数据

$sql = "insert into `elconlist` (`ecgrouid`,`elcono`) VALUES"; for($i = 0; $i < $ecnum; $i++){ //拼装SQL if($i != $ecnum-1){ if((float)($i+1)%1000 != 0){ $sql .= "(".$ecgrouid.",'".$this->creatElcono($comid)."'),&quo

注意在insert插入数据库时的int类型问题

比如,一个语句,insert into mbProduct(p_UserID,p_BigID,p_qq)values("+getUserid+",'"+getdrpdl+"',"+qq+",,'"+bb+"')(getUserid是从主键获得,一定有值,可以这样写),如果这样,假设qq是从文本框获得的,如果是这个形式: string qq=txtqq.text,会发生,当txtqq为空时,没有值,也就是这样insert int

使用达思SQL数据库修复软件导出数据库时的接收数据的数据库如何清空表数据?

清空表数据,保留视图,存储过程,函数,以及保留表约束.触发器等等,可以给故障数据库预留一个好的躯壳,把坏库数据导入此躯壳.对用友.金蝶等数据库恢复有时候能达到好的效果. 清除表数据有两种方法: 一种用delete from [表名] ,这种方法对于大数据库,速度慢,会产生很大的日志信息,对于小库,速度可以忽略: 另一种是truncate table [表名] ,这种方法速度快,但清除不了具有外键的表数据. 在清除表数据时,可以采用两种方法结合. 清除表数据时先禁用一切约束,清除完成以后再次启用约

PHP实例————表单数据插入数据库及数据提取

网站在进行新用户注册时,都会将用户的注册信息存入数据库中,需要的时候再进行提取.今天写了一个简单的实例. 主要完成以下几点功能: (1)用户进行注册,实现密码重复确认,验证码校对功能. (2)注册成功后,将用户进行插入数据库中进行保存. (3)将数据库表中数据进行提取,并打印. 1.注册表单 在以前的几篇博客中,分享过注册及登录表单的代码.这次的代码,大致相同,只是略有变化.仅作为实例探讨 <html> <head> <title>注册页面</title>

PHP+Mysql————表单数据插入数据库及数据提取

站点在进行新用户注冊时,都会将用户的注冊信息存入数据库中,须要的时候再进行提取.今天写了一个简单的实例. 主要完毕下面几点功能: (1)用户进行注冊,实现password反复确认,验证码校对功能. (2)注冊成功后,将用户进行插入数据库中进行保存. (3)将数据库表中数据进行提取,并打印. 1.注冊表单 在曾经的几篇博客中,分享过注冊及登录表单的代码.这次的代码,大致同样,仅仅是略有变化.仅作为实例探讨 表单页面实在没什么可讲的,除了格式对齐上加几个&nbsp(空格). <html>

PHP实例 表单数据插入数据库及数据提取 用户注册验证

网站在进行新用户注册时,都会将用户的注册信息存入数据库中,需要的时候再进行提取.今天写了一个简单的实例. 主要完成以下几点功能: (1)用户进行注册,实现密码重复确认,验证码校对功能. (2)注册成功后,将用户进行插入数据库中进行保存. (3)将数据库表中数据进行提取,并打印. 1.注册表单 在以前的几篇博客中,分享过注册及登录表单的代码.这次的代码,大致相同,只是略有变化.仅作为实例探讨 <html> <head> <title>注册页面</title>

PHP+Mysql-表单数据插入数据库及数据提取完整过程

网站在进行新用户注册时,都会将用户的注册信息存入数据库中,需要的时候再进行提取.今天写了一个简单的实例. 主要完成以下几点功能: (1)用户进行注册,实现密码重复确认,验证码校对功能. (2)注册成功后,将用户进行插入数据库中进行保存. (3)将数据库表中数据进行提取,并打印. 1.注册表单 在以前的几篇博客中,分享过注册及登录表单的代码.这次的代码,大致相同,只是略有变化.仅作为实例探讨 <html> <head> <title>注册页面</title>

mysql insert插入时实现如果数据表中主键重复则更新,没有重复则插入的四种方法

[CSDN下载] Powerdesigner 设计主键code不能重复等问题 [CSDN博客] Oracle中用一个序列给两个表创建主键自增功能的后果 [CSDN博客] MySQL自增主键删除后重复问题 [CSDN博客] mysql 主从复制 双主从复制原理 防止主键重复问题(必看) [CSDN博客] replace into导致mysql自增列导致主键重复问题分析 [CSDN博客] 一个循环更新某库所有表所有非主键列的值方法(sql 2005 & mysql) [CSDN博客] mysql i