CodeIgniter数据库基本用法示例

时间:2022-06-22 16:56:18

这里主要演示下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}')