CodeIgniter学习笔记 Item5--CI中的AR
AR(Active Record)
在启用AR的情况下(CI3.0默认已经启动并且没有配置项),通过
$this->db
的get方法可以获得一张表的结果集
[code]// AR会自动加上表前缀,因此get方法中的表名不用加上表前缀 $res = $this->db->get('user'); foreach ($res->result() as $item) { echo $item->name . "
"; }
通过insert方法可以简单的插入一条记录,参数是表名和关联数组
[code]$data = array('name'=>'mary', 'password'=>md5('mary')); $result = $this->db->insert('user', $data);
通过update方法修改记录,第一个参数是表明,第二个参数是修改后的内容,用关联数组表示,第三个参数是查询条件
[code]$data = array ('email'=>'mary@gmail.com', 'password'=>md5('123456')); $this->db->update('user', $data, array('name'=>'mary'));
通过delete方法删除一条记录,参数一是表名,参数二是查询条件
[code]$this->db->delete('user', array('name'=>'mary'));
连贯操作,对于比较复杂的SQL语句,可以使用AR提供的连贯操作进行查询
[code]$result = $this->db->select('id, name') ->from('user') ->where('id >=', 1) ->limit(3,1) ->order_by('id desc ') ->get();
注意:limit的参数顺序与SQL中的顺序是相反的,第一个参数表示显示的条数,第二个参数表示跳过的条数
不同查询条件下where语句的写法
[code]where('name', 'mary')或where('name =', 'mary'):表示查询条件是name字段值是mary where(array('name'=>'mary', 'id >'=>'1'));:表示查询条件有两个,name字段值是mary并且id字段值是1
通过last_query()方法可以获得通过连贯操作,由AR拼装的SQL语句
[code]$this->db->last_query();
通过AR只能执行比较简单的查询,如果是复杂查询,建议使用$this->db->query($sql, $data)
进行查询
选择数据
下面的函数帮助你构建 SQL SELECT语句。
备注:如果你正在使用 PHP5,你可以在复杂情况下使用链式语法。本页面底部有具体描述。
[code]$this->db->get();
运行选择查询语句并且返回结果集。可以获取一个表的全部数据。
[code]$query = $this->db->get('mytable'); // Produces: SELECT * FROM mytable
第二和第三个参数允许你设置一个结果集每页纪录数(limit)和结果集的偏移(offset)
[code]$query = $this->db->get('mytable', 10, 20); // Produces: SELECT * FROM mytable LIMIT 20, 10 (in MySQL. Other databases have slightly different syntax)
注意:第二参数是每页纪录数,第三个参数是偏移
你会注意到上面的函数由一个变量$query
执行,这个$query
可以用来显示结果集。
[code]$query = $this->db->get('mytable'); foreach ($query->result() as $row) { echo $row->title; } [code]$this->db->get_where();
跟上面的函数一样,只是它允许你在函数的第二个参数那里添加一个 where 从句,从而不用使用 db->where() 这个函数:
[code]$query = $this->db->get_where('mytable', array('id' => $id), $limit, $offset);
注意: get_where() 在以前的版本中写作 getwhere(),这是已经过时的用法,现已从代码中移除 getwhere()。
[code]$this->db->select();
允许你在SQL查询中写 SELECT 部分:
[code]$this->db->select('title, content, date'); $query = $this->db->get('mytable'); // Produces: SELECT title, content, date FROM mytable
注意: 如果你要查询表中的所有行,你可以不用写这个函数。省略后,CodeIgniter 会认为你要查询全部行(SELECT *)。
$this->db->select()
[code]$this->db->select('(SELECT SUM(payments.amount) FROM payments WHERE payments.invoice_id=4') AS amount_paid', FALSE); $query = $this->db->get('mytable');
关联数组方式:
[code]$array = array('title' => $match, 'page1' => $match, 'page2' => $match); $this->db->like($array); // WHERE title LIKE '%match%' AND page1 LIKE '%match%' AND page2 LIKE '%match%' $this->db->or_like();
本函数与上面那个函数几乎完全相同,唯一的区别是多个实例之间是用 OR 连接起来的:
[code]$this->db->like('title', 'match'); $this->db->or_like('body', $match); // WHERE title LIKE '%match%' OR body LIKE '%match%'
说明: or_like() 曾经被称为 orlike(), 后者已经过时,现已从代码中移除 orlike()。
[code]$this->db->not_like();
本函数与 like() 几乎完全相同,唯一的区别是它生成 NOT LIKE 语句:
[code]$this->db->not_like('title', 'match'); // WHERE title NOT LIKE '%match% $this->db->or_not_like();
本函数与 not_like() 几乎完全相同,唯一的区别是多个实例之间是用 OR 连接起来的:
[code]$this->db->like('title', 'match'); $this->db->or_not_like('body', 'match'); // WHERE title LIKE '%match%' OR body NOT LIKE '%match%' $this->db->group_by();
允许你编写查询语句中的 GROUP BY 部分:
[code]$this->db->group_by("title"); // 生成: GROUP BY title
你也可以把多个值作为数组传递过去:
[code]$this->db->group_by(array("title", "date")); // 生成: GROUP BY title, date
说明: group_by() 曾经被称为 groupby(), 后者已经过时,现已从代码中移除 groupby()。
[code]$this->db->distinct();
为查询语句添加 “DISTINCT” 关键字:
[code]$this->db->distinct(); $this->db->get('table'); // 生成: SELECT DISTINCT * FROM table $this->db->having();
允许你为你的查询语句编写 HAVING 部分。有两种语法形式,一个或两个参数都可以:
[code]$this->db->having('user_id = 45'); // 生成: HAVING user_id = 45 $this->db->having('user_id', 45); // 生成: HAVING user_id = 45 你也可以把多个值通过数组传递过去: [code]$this->db->having(array('title =' => 'My Title', 'id <' => $id)); // 生成: HAVING title = 'My Title', id < 45
如果你正在使用一个由CodeIgniter进行转义保护的数据库,为了避免内容转义,你可以传递可选的第三个参数,并将其设置为FALSE。
[code]$this->db->having('user_id', 45); // 生成: HAVING `user_id` = 45 (在诸如MySQL等数据库中) $this->db->having('user_id', 45, FALSE); // 生成: HAVING user_id = 45 $this->db->or_having();
与 having() 函数几乎完全一样,唯一的区别是多个子句之间是用 “OR” 分隔的。
[code]$this->db->order_by();
帮助你设置一个 ORDER BY 子句。第一个参数是你想要排序的字段名。第二个参数设置结果的顺序,可用的选项包括 asc (升序)或 desc(降序), 或 random(随机)。
[code]$this->db->order_by("title", "desc"); // 生成: ORDER BY title DESC
你也可以在第一个参数中传递你自己的字符串:
[code]$this->db->order_by('title desc, name asc'); // 生成: ORDER BY title DESC, name ASC
或者,多次调用本函数就可以排序多个字段。
[code]$this->db->order_by("title", "desc"); $this->db->order_by("name", "asc"); // 生成: ORDER BY title DESC, name ASC
说明: order_by() 曾经被称为 orderby(), 后者已经过时,现已从代码中移除 orderby()。
说明: 目前 Oracle 和 MSSQL 的驱动还不支持随机排序,将被默认设置为 ‘ASC’(升序)。
[code]$this->db->limit();
限制查询所返回的结果数量:
[code]$this->db->limit(10); // 生成: LIMIT 10
第二个参数设置的是结果偏移量。
[code]$this->db->limit(10, 20); // 生成: LIMIT 20, 10 (仅限MySQL中。其它数据库有稍微不同的语法) $this->db->count_all_results();
允许你获得某个特定的Active Record查询所返回的结果数量。可以使用Active Record限制函数,例如 where(),or_where()
, like(), or_like() 等等。范例:
[code]echo $this->db->count_all_results('my_table'); // 生成一个整数,例如 25 $this->db->like('title', 'match'); $this->db->from('my_table'); echo $this->db->count_all_results(); // 生成一个整数,例如 17
插入数据
[code]$this->db->insert();
生成一条基于你所提供的数据的SQL插入字符串并执行查询。你可以向函数传递 数组 或一个 对象。下面是一个使用数组的例子:
[code]$data = array( 'title' => 'My title' , 'name' => 'My Name' , 'date' => 'My date' ); $this->db->insert('mytable', $data); // Produces: INSERT INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date')
第一个参数包含表名,第二个是一个包含数据的关联数组。
下面是一个使用对象的例子:
[code]/* class Myclass { var $title = 'My Title'; var $content = 'My Content'; var $date = 'My Date'; } */ $object = new Myclass; $this->db->insert('mytable', $object); // Produces: INSERT INTO mytable (title, content, date) VALUES ('My Title', 'My Content', 'My Date')
第一个参数包含表名,第二个是一个对象。(原文有错:The first parameter will contain the table name, the second is an associative array of values.)
注意: 所有的值已经被自动转换为安全查询。
[code]$this->db->set();
本函数使您能够设置inserts(插入)或updates(更新)值。
它可以用来代替那种直接传递数组给插入和更新函数的方式:
[code]$this->db->set('name', $name); $this->db->insert('mytable'); // 生成: INSERT INTO mytable (name) VALUES ('{$name}')
如果你多次调用本函数,它们会被合理地组织起来,这取决于你执行的是插入操作还是更新操作:
[code]$this->db->set('name', $name); $this->db->set('title', $title); $this->db->set('status', $status); $this->db->insert('mytable');
set() 也接受可选的第三个参数($escape),如果此参数被设置为 FALSE,就可以阻止数据被转义。为了说明这种差异,这里将对 包含转义参数 和 不包含转义参数 这两种情况的 set() 函数做一个说明。
[code]$this->db->set('field', 'field+1', FALSE); $this->db->insert('mytable'); // 得到 INSERT INTO mytable (field) VALUES (field+1) $this->db->set('field', 'field+1'); $this->db->insert('mytable'); // 得到 INSERT INTO mytable (field) VALUES ('field+1')
你也可以将一个关联数组传递给本函数:
[code]$array = array('name' => $name, 'title' => $title, 'status' => $status); $this->db->set($array); $this->db->insert('mytable');
或者一个对象也可以:
[code]/* 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');
更新数据
[code]$this->db->update();
根据你提供的数据生成并执行一条update(更新)语句。你可以将一个数组或者对象传递给本函数。这里是一个使用数组的例子:
[code]$data = array( 'title' => $title, 'name' => $name, 'date' => $date ); $this->db->where('id', $id); $this->db->update('mytable', $data); // 生成: // UPDATE mytable // SET title = '{$title}', name = '{$name}', date = '{$date}' // WHERE id = $id
或者你也可以传递一个对象:
[code]/* class Myclass { var $title = 'My Title'; var $content = 'My Content'; var $date = 'My Date'; } */ $object = new Myclass; $this->db->where('id', $id); $this->db->update('mytable', $object); // 生成: // UPDATE mytable // SET title = '{$title}', name = '{$name}', date = '{$date}' // WHERE id = $id
说明: 所有值都会被自动转义,以便生成安全的查询。
你会注意到
$this->db->where()
[code]$this->db->update('mytable', $data, "id = 4");
或者是一个数组:
[code]$this->db->update('mytable', $data, array('id' => $id));
在进行更新时,你还可以使用上面所描述的 $this->db->set() 函数。
删除数据
[code]$this->db->delete();
生成并执行一条DELETE(删除)语句。
[code]$this->db->delete('mytable', array('id' => $id)); // 生成: // DELETE FROM mytable // WHERE id = $id
第一个参数是表名,第二个参数是where子句。你可以不传递第二个参数,使用 where() 或者 or_where() 函数来替代它:
[code]$this->db->where('id', $id); $this->db->delete('mytable'); // 生成: // DELETE FROM mytable // WHERE id = $id
如果你想要从一个以上的表中删除数据,你可以将一个包含了多个表名的数组传递给delete()函数。
[code]$tables = array('table1', 'table2', 'table3'); $this->db->where('id', '5'); $this->db->delete($tables);
如果你想要删除表中的全部数据,你可以使用 truncate() 函数,或者 empty_table() 函数。
[code]$this->db->empty_table();
生成并执行一条DELETE(删除)语句。
[code] $this->db->empty_table('mytable'); // 生成 // DELETE FROM mytable $this->db->truncate();
生成并执行一条TRUNCATE(截断)语句。
[code]$this->db->from('mytable'); $this->db->truncate(); // 或 $this->db->truncate('mytable'); // 生成: // TRUNCATE mytable
说明: 如果 TRUNCATE 命令不可用,truncate() 将会以 “DELETE FROM table” 的方式执行。
链式方法
链式方法允许你以连接多个函数的方式简化你的语法。考虑一下这个范例:
[code]$this->db->select('title')->from('mytable')->where('id', $id)->limit(10, 20); $query = $this->db->get();
以上就是CodeIgniter学习笔记 Item5--CI中的AR的内容,更多相关内容请关注PHP中文网(www.php.cn)!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



XREAL melancarkan produk baharu - XREALBeamPro pada persidangan pelancaran produk baharu pengkomputeran spatial, berharga daripada 1,299 yuan. Menurut pengenalan rasmi, XREALBeamPro ialah terminal pengkomputeran yang secara beransur-ansur mengeluarkan aplikasi 2D ke dalam ruang 3D Dilengkapi dengan cermin mata XREALAR, ia akan membentuk "sistem pengkomputeran ruang AR gred pengguna yang lengkap" dan meminimumkan kos migrasi pengguna daripada telefon mudah alih. sebelah. Dari segi reka bentuk, XREALBeamPro kelihatan seperti telefon pintar, tetapi ia bukan produk telefon bimbit, tetapi terminal pengkomputeran spatial yang dilengkapi dengan paparan sentuh. Ia secara rasmi diletakkan sebagai "terminal pengkomputeran spatial AR seperti Telefon". Pada sidang akhbar itu, pengasas dan Ketua Pegawai Eksekutif XREAL Xu Chi menyatakan semangatnya terhadap keupayaan BeamPro.

Cara melaksanakan middleware tersuai dalam CodeIgniter Pengenalan: Dalam pembangunan web moden, middleware memainkan peranan penting dalam aplikasi. Ia boleh digunakan untuk melaksanakan beberapa logik pemprosesan yang dikongsi sebelum atau selepas permintaan sampai kepada pengawal. CodeIgniter, sebagai rangka kerja PHP yang popular, juga menyokong penggunaan middleware. Artikel ini akan memperkenalkan cara untuk melaksanakan perisian tengah tersuai dalam CodeIgniter dan memberikan contoh kod mudah. Gambaran keseluruhan Middleware: Middleware ialah sejenis permintaan

Dengan pembangunan AR (Augmented Reality) dan VR (Virtual Reality), kedua-dua teknologi ini telah menjadi bahagian penting dalam inovasi dan pengalaman. Dengan populariti PHP sebagai bahasa pengaturcaraan rangkaian, PHP telah menjadi pilihan yang sesuai untuk membangunkan aplikasi AR/VR. Artikel ini akan memperkenalkan cara menggunakan PHP untuk membina aplikasi AR/VR. 1. Fahami teknologi AR dan VR Sebelum kita mula mencipta aplikasi AR/VR, kita perlu memahami teknologi dan perpustakaan yang berbeza. Teknologi AR membolehkan objek atau maklumat maya berinteraksi dengan persekitaran dunia sebenar. V

(Nweon 26 September 2023) Microsoft percaya bahawa MicroLED mempunyai ciri saiz kecil, ringan, kecerahan tinggi dan ketumpatan pembungkusan yang tinggi, dan mungkin sangat sesuai untuk peranti yang dipasang di kepala yang memerlukan resolusi tinggi, saiz kecil dan ringan. . Dalam aplikasi paten bertajuk "Microlenses menyediakan manipulasi sudut sinar ketua pelbagai untuk paparan panel", Microsoft memperkenalkan kanta mikro yang menyediakan manipulasi sudut sinar ketua julat luas untuk paparan panel, dan sistem paparan yang dikonfigurasikan dengan tatasusunan mikrolens. Di mana, setiap mikrolens dalam tatasusunan sepadan dengan piksel paparan panel masing-masing. Microlenses dikonfigurasikan mengikut mereka

CodeIgniter Middleware: Mempercepatkan Responsif Aplikasi dan Gambaran Keseluruhan Pemberian Halaman: Memandangkan aplikasi web terus berkembang dalam kerumitan dan interaktiviti, pembangun perlu menggunakan penyelesaian yang lebih cekap dan berskala untuk meningkatkan prestasi dan responsif aplikasi. CodeIgniter (CI) ialah rangka kerja berasaskan PHP ringan yang menyediakan banyak ciri berguna, salah satunya ialah perisian tengah. Middleware ialah satu siri tugasan yang dilakukan sebelum atau selepas permintaan sampai kepada pengawal. Artikel ini akan memperkenalkan cara menggunakan

Dari 9 hingga 12 Januari, lebih daripada 4,000 pempamer berkumpul di CES, elektronik pengguna "Spring Festival Gala". Sebagai sebuah syarikat yang inovatif dalam bidang AR pengguna, Mojie Technology mengambil bahagian dalam CES buat kali pertama, menunjukkan sepenuhnya kekuatan kukuh syarikat AR China dalam peranti teras, penyelesaian mesin lengkap dan perkhidmatan tersuai. Di gerai Mojie, cermin mata AR berdasarkan panduan cahaya pembelauan resin binokular + MicroLED dipaparkan, yang membangkitkan minat ramai pengunjung, yang mencubanya dan mengalami fungsinya. Cermin mata AR ini mempunyai banyak ciri praktikal. Pertama, pemakai boleh melihat kandungan teks dalam masa nyata melalui kanta cermin mata, yang menjadikan bacaan lebih mudah. Kedua, cermin mata mempunyai mikrofon terbina dalam yang boleh mengumpul maklumat suara dan menukarnya menjadi teks dalam bahasa tertentu melalui fungsi terjemahan segera.

Pengenalan kepada kaedah menggunakan pembina pertanyaan pangkalan data (QueryBuilder) dalam rangka kerja CodeIgniter: CodeIgniter ialah rangka kerja PHP ringan yang menyediakan banyak alat dan perpustakaan yang berkuasa untuk memudahkan pembangun dalam pembangunan aplikasi web. Salah satu ciri yang paling mengagumkan ialah pembina pertanyaan pangkalan data (QueryBuilder), yang menyediakan cara ringkas dan berkuasa untuk membina dan melaksanakan pernyataan pertanyaan pangkalan data. Artikel ini akan memperkenalkan cara menggunakan Co

NTT QONOQ Devices telah memperkenalkan cermin mata XR wayarles Mirza untuk telefon pintar, membebaskan pengguna daripada perlu bergelut dengan kord. Cermin mata boleh memaparkan kandungan AR maya dalam ruang dunia nyata seperti Pokemon Go atau kandungan telefon mereka pada paparan maya yang besar
