基本查询 要提交一个查询,使用 query 函数:
$query = $this->db->query('YOUR QUERY HERE'); //当你执行读类型的查询(如:SELECT)时,query() 函数将以**对象**形式 返回一个结果集,参考这里来 显示你的结果。 当你执行写类型的查询(如:INSERT、DELETE、UPDATE)时,函数将简单的返回 TRUE 或 FALSE 来表示操作是否成功。 你可以将函数返回的结果赋值给一个变量,这样你就可以根据这个变量来获取 数据了
转义查询
$this->db->escape() 这个函数会检测数据类型,仅转义字符串类型的数据。 它会自动用单引号将你的数据括起来,你不用手动添加:
$sql="INSERT INTO table (title) VALUES(".$this->db->escape($title).")";
$this->db->escape_str() 这个函数忽略数据类型,对传入的数据进行转义, 这个方法并不常用,一般情况都是使用上面的那个方法。方法的使用代码如下:
$sql="INSERT INTO table (title) VALUES('".$this->db->escape_str($title)."')";
$this->db->escape_like_str() 这个函数用于处理 LIKE 语句中的字符串,
这样,LIKE 通配符('%', '_')可以被正确的转义。
$search='20% raise';$sql="SELECT id FROM table WHERE column LIKE '%".$this->db->escape_like_str($search)."%' ESCAPE '!'";
查询绑定
$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*FROMsome_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'}
生成查询结果
result() 方法 以**对象数组**形式返回查询结果,如果查询失败返回**空数组**。
$query=$this->db->query("YOUR QUERY");
foreach($query->result() as $row){
echo $row->title;
echo $row->name;
echo $row->body;
}
result_array() 方法
这个方法以 一个纯粹的数组 形式返回查询结果,如果无结果,则返回一个空数组。一般情况下,你会像下面这样在一个 foreach 循环中使用它:
$query=$this->db->query("YOUR QUERY");
foreach($query->result_array() as $row){
echo $row['title'];
echo $row['name'];
echo $row['body'];
}
row() 方法
这个方法返回单独一行结果。如果你的查询不止一行结果,它只返回第一行。返回的结果是 对象 形式,这里是用例:
$query=$this->db->query("YOUR QUERY");
$row=$query->row();
if(isset($row)){
echo $row->title;
echo $row->name;
echo $row->body;
}
如果你要返回特定行的数据,你可以将行号作为第一个参数传给这个方法:
$row=$query->row(5);
row_array() 方法
这个方法除了返回结果是一个数组而不是一个对象之外,其他的和上面的 row() 方法完全一样。举例:
$query=$this->db->query("YOUR QUERY");
$row=$query->row_array();
if(isset($row)){
echo $row['title'];
echo $row['name'];.
echo$row['body'];
}
如果你要返回特定行的数据,你可以将行号作为第一个参数传给这个方法:
$row=$query->row_array(5);
num_rows() 方法
该方法返回查询结果的行数。注意:在这个例子中,$query 变量为查询结果对象:
$query=$this->db->query('SELECT * FROM my_table');
echo $query->num_rows();
num_fields() 方法
该方法返回查询结果的字段数(列数)。在你的查询结果对象上调用该方法:
$query=$this->db->query('SELECT * FROM my_table');
echo $query->num_fields();
free_result() 方法
该方法释放掉查询结果所占的内存,并删除结果的资源标识。通常来说, PHP 会在脚本执行结束后自动释放内存。但是,如果你在某个脚本中执行大量的查询, 你可能需要在每次查询之后释放掉查询结果,以此来降低内存消耗。
举例:
$query=$this->db->query('SELECT title FROM my_table');
foreach($query->result()as$row){
echo $row->title;
}
$query->free_result();// The $query result object will no longer be available
$query2=$this->db->query('SELECT name FROM some_table');
$row=$query2->row();
echo$row->name;
$query2->free_result(); // The $query2 result object will no longer be available
查询辅助函数
$this->db->insert_id() 当执行 INSERT 语句时,这个方法返回新插入行的ID。
$this->db->affected_rows() 当执行 INSERT、UPDATE 等写类型的语句时,这个方法返回受影响的行数。
$this->db->last_query() 该方法返回上一次执行的查询语句(是查询语句,不是结果)
关于数据库的信息
$this->db->count_all() 该方法用于获取数据表的总行数,第一个参数为表名
echo $this->db->count_all('my_table'); // Produces an integer, like 25
$this->db->platform() 该方法输出你正在使用的数据库平台(MySQL,MS SQL,Postgres 等):
$this->db->version() 该方法输出你正在使用的数据库版本:
让你的查询更简单
$this->db->insert_string() 所有的值自动被转义,生成安全的查询语句。
这个方法简化了 INSERT 语句的书写,它返回一个正确格式化的 INSERT 语句。 举例:
$data=array('name'=>$name,'email'=>$email,'url'=>$url);
$str=$this->db->insert_string('table_name',$data);
$this->db->update_string() 这个方法简化了 UPDATE 语句的书写,它返回一个正确格式化的 UPDATE 语句 所有的值自动被转义,生成安全的查询语句。