一、常规查询
1、query()提交一个查询
$this->db->query('YOUR QUERY HERE');
当你执行读类型的查询(如:SELECT)时,query() 函数将以**对象**形式 返回一个结果集。 当你执行写类型的查询(如:INSERT、DELETE、UPDATE)时,函数将简单的返回 TRUE 或 FALSE 来表示操作是否成功。 你可以将函数返回的结果赋值给一个变量,这样你就可以根据这个变量来获取 数据了,像下面这样:
$query = $this->db->query('YOUR QUERY HERE');
在很多数据库里,保护表名和字段名是可取的,例如在 MySQL 数据库里使用反引号。 使用查询构造器会自动保护标识符。
二、转义查询
在提交数据到你的数据库之前,确保先对其进行转义是个非常不错的做法
1、$this->db->escape()
这个函数会检测数据类型,仅转义字符串类型的数据。 它会自动用单引号将你的数据括起来,你不用手动添加:
$sql = "INSERT INTO table (title) VALUES(".$this->db->escape($title).")";
2、$this->db->escape_like_str()
这个函数用于处理 LIKE 语句中的字符串,这样,LIKE 通配符('%', '_')可以被正确的转义。
三、查询绑定
查询绑定可以简化你的查询语法,它通过系统自动的为你将各个查询组装在一起。
$sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?"; $this->db->query($sql, array(3, 'live', 'Rick'));
查询语句中的问号将会自动被第二个参数位置的数组的相应的值替代。
也可以使用数组的数组进行绑定,里面的数组会被转换成 IN 语句的集合:
$sql = "SELECT * FROM some_table WHERE id IN ? AND status = ? AND author = ?"; $this->db->query($sql, array(array(3, 6), 'live', 'Rick'));
上面的例子会被转换为这样的查询:
SELECT * FROM some_table WHERE id IN (3,6) AND status = 'live' AND author = 'Rick'
使用查询绑定的第二个好处是:所有的值会被自动转义,生成安全的查询语句。 你不再需要手工进行转义,系统会自动进行。
四、错误处理
$this->db->error();
要获取最近一次发生的错误,使用 error() 方法可以得到一个包含错误代码和错误消息的数组。
if ( ! $this->db->simple_query('SELECT `example_field` FROM `example_table`')) { $error = $this->db->error(); // Has keys 'code' and 'message' }