这里主要演示下CodeIgniter数据库的基本用法示例,以便入门使用CodeIgniter做数据库操作。
配置数据库连接等信息
CodeIgniter提供了文件 application/config/database.php用来配置数据库的连接信息,如下:
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'database_name',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => TRUE,
'db_debug' => TRUE,
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array()
);
其中dsn为连接数据库的uri:
// PDO
$db['default']['dsn'] = 'pgsql:host=localhost;port=5432;dbname=database_name';
// Oracle
$db['default']['dsn'] = '//localhost/XE';
初始化Database类
$this->load->database();
它会加载上面的配置文件,然后来初始化database类。
多行记录的标准查询(Object版)
$query = $this->db->query('SELECT name, title, email FROM my_table');
foreach ($query->result() as $row)
{
echo $row->title;
echo $row->name;
echo $row->email;
}
echo 'Total Results: ' . $query->num_rows();
$query->result()会返回一个对象数组。
多行记录的标准查询(数组版)
$query = $this->db->query('SELECT name, title, email FROM my_table');
foreach ($query->result_array() as $row)
{
echo $row['title'];
echo $row['name'];
echo $row['email'];
}
$query->result_array()返回的每条记录为一个数组,取值如$row['title']。
单条记录的标准查询
$query = $this->db->query('SELECT name FROM my_table LIMIT 1');
$row = $query->row();
echo $row->name;
$query->row()返回一个对象,取对象的值如:$row->name。
单条记录的标准查询(数组版)
$query = $this->db->query('SELECT name FROM my_table LIMIT 1');
$row = $query->row_array();
echo $row['name'];
$query->row_array(),返回的记录为一个数组,使用索引取值如:$row['name']。
标准插入
$sql = "INSERT INTO mytable (title, name) VALUES (".$this->db->escape($title).", ".$this->db->escape($name).")";
$this->db->query($sql);
echo $this->db->affected_rows();
使用Query Builder的模式查询
$query = $this->db->get('table_name');
foreach ($query->result() as $row)
{
echo $row->title;
}
Query Builder的get()会查询表的所有数据。
使用Query Build插入数据
$data = array(
'title' => $title,
'name' => $name,
'date' => $date
);
$this->db->insert('mytable', $data); // 实际是语句: INSERT INTO mytable (title, name, date) VALUES ('{$title}', '{$name}', '{$date}')