CodeSüütaja aktiivse kirje sisestamine, värskendamine, kustutamine päring
⚡ Nutikas kokkuvõte
CodeIgniter Active Record on disainimuster, mis võimaldab mudelil andmebaasi lugeda ja kirjutada lihtsate ja turvaliste meetodikettide abil. See toetab sisestamist, valimist, värskendamist ja kustutamist erinevates andmebaasimootorites ilma koodi ümber kirjutamata ning see parameetriseerib sisendi SQL-süstimise vältimiseks.

Andmed on enamiku rakenduste alustala. Neid tuleb salvestada, et neid saaks analüüsida, et saada teadmisi ja hõlbustada äriotsuseid. Andmeid salvestatakse tavaliselt andmebaasi. Andmebaasiga suhtlemisel on peamisteks murekohtadeks turvalisus, juurdepääsu lihtsus ja andmebaasi müüjapõhised struktureeritud päringukeele (SQL) implementatsioonid.
Active Record on disainimuster, mis muudab andmebaasiga suhtlemise turvaliseks ja loogiliseks. Active Recordil on järgmised eelised:
- Lisa, uuenda ja kustuta kirjeid lihtsate meetodikettide abil.
- Esitab kasutaja sisendi turvaliselt parameetrite abil.
- Võimaldab töötada mitme andmebaasimootoriga, näiteks MySQL ja SQL Server ilma rakenduskoodi ümber kirjutamata.
- CodeIgniter kasutab taustal iga andmebaasimootori jaoks spetsiifilisi draivereid.
Kuidas kasutada aktiivset kirjet: näide
Selles õpetuses kasutame näidisandmebaasi kahe tabeliga, millest üks sisaldab tellimusi ja teine üksikasju. See õpetus eeldab, et teil on MySQL andmebaas on installitud ja töötab. Õpetusandmebaasi loomiseks käivitage järgmised skriptid:
CREATE SCHEMA ci_active_record; USE ci_active_record; CREATE TABLE `order_details` ( `id` int(11) NOT NULL AUTO_INCREMENT, `order_id` int(11) DEFAULT NULL, `item` varchar(245) DEFAULT NULL, `quantity` int(11) DEFAULT '0', `price` decimal(10,2) DEFAULT '0.00', `sub_total` decimal(10,2) DEFAULT '0.00', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT = 1; CREATE TABLE `orders` ( `id` int(11) NOT NULL AUTO_INCREMENT, `date` timestamp NULL DEFAULT NULL, `customer_name` varchar(245) DEFAULT NULL, `customer_address` varchar(245) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT = 1;
Ülaltoodud kood loob andmebaasi nimega ci_active_record ja kaks tabelit, orders ja order_details. Kahe tabeli vaheline seos määratakse kindlaks veeru ID-ga orders tabelis ja order_id-ga order_details tabelis.
CodeSüütaja andmebaasi konfiguratsioon
Nüüd konfigureerime oma rakenduse selle andmebaasiga suhtlema. Avage andmebaasi konfiguratsioonifail, mis asub failis application/config/database.php, ja leidke sealt järgmised read:
'hostname' => 'localhost', 'username' => '', 'password' => '', 'database' => '',
Uuenda ülaltoodud koodi järgmiselt:
'hostname' => 'localhost', 'username' => 'root', 'password' => 'letmein', 'database' => 'ci_active_record',
Märge: peate kasutajanime ja parooli asendama omadega, mis vastavad teie omale. MySQL konfiguratsioon.
Lisaks andmebaasi konfiguratsiooni üksikasjadele peame ütlema ka CodeSüütaja andmebaasi teegi laadimiseks laadimisel.
Step 1) Ava järgmine fail: application/config/autoload.php.
Step 2) Leidke $autoload massiivi võtmeteegid ja laadige andmebaasiteek allpool näidatud viisil:
$autoload['libraries'] = array('database');
siin:
- Ülaltoodud kood laadib andmebaasi teeki rakenduse käivitamisel.
CodeSüütaja Sisesta aktiivne kirje
Testimise eesmärgil loome kontrolleri ja määratleme marsruudid, et suhelda meie rakendusega Active Recordi kaudu. Looge uus fail application/controllers/ActiveRecordController.php ja lisage järgmine kood:
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class ActiveRecordController extends CI_Controller { public function store_order(){ $data = [ 'date' => '2018-12-19', 'customer_name' => 'Joe Thomas', 'customer_address' => 'US' ]; $this->db->insert('orders', $data); echo 'order has successfully been created'; } }
siin:
- $data = […] defineerib massiivimuutuja data, mis kasutab andmebaasi tabeli veerunimesid massiivivõtmetena ja määrab neile väärtused.
- $this->db->insert('orders', $data); kutsub välja andmebaasiteegi sisestusmeetodi, edastades tabeli nime orders ja massiivimuutuja $data. See rida genereerib SQL INSERT-lause, kasutades massiivivõtmeid väljanimedena ja massiivi väärtusi lisatavate väärtustena.
Nüüd, kui oleme kontrolleri meetodi loonud, peame looma marsruudi, mida me selle käivitamiseks kutsume. Avage application/config/routes.php ja lisage järgmine rida:
$route['ar/insert'] = 'activerecordcontroller/store_order';
siin:
- Me defineerime marsruudi ar/insert, mis kutsub esile ActiveRecordControlleri store_order meetodi.
Käivitame nüüd veebiserveri oma meetodi testimiseks. Sisseehitatud PHP-serveri käivitamiseks käivitage järgmine käsk:
cd C:\Sites\ci-app php -S localhost:3000
siin:
- Ülaltoodud käsk sirvib projektikataloogi ja käivitab sisseehitatud serveri pordil 3000.
Laadige järgmine URL oma brauserisse: http://localhost:3000/ar/insertSaate järgmise tulemuse:
order has successfully been created
avage MySQL õpetuse andmebaasi ja kontrollige tellimuste tabelit. Näete äsja loodud rida, nagu on näidatud alloleval pildil:
CodeSüütaja Valige aktiivne kirje
Selles jaotises näeme, kuidas andmebaasi kirjeid lugeda ja neid veebibrauseris järjestamata loendina kuvada. Lisage ActiveRecordControllerile järgmine meetod:
public function index() { $query = $this->db->get('orders'); echo "<h3>Orders Listing</h3>"; echo "<ul>"; foreach ($query->result() as $row) { echo "<li>$row->customer_name</li>"; } echo "</ul>"; }
siin:
- $query = $this->db->get('orders'); käivitab valikupäringu tellimuste tabeli suhtes, valides kõik väljad.
- kaja “ Tellimuste loetelu ”; kuvab HTML-päise.
- kaja “ ”; prindib järjestamata HTML-loendi avasildi.
- foreach ($query->result() as $row) {…} tsüklib läbi andmebaasist tagastatud tulemused ja echo „ $row->kliendi_nimi ”; prindib kliendi_nime.
Enne laadimist URL, saate andmebaasi lisada veel paar kirjet. Määratleme nüüd SELECT-päringu jaoks marsruudi. Avage application/config/routes.php ja lisage järgmine marsruut:
$route['ar'] = 'activerecordcontroller';
siin:
- Marsruut ar viitab ActiveRecordController klassi index-meetodile. See on vaikeväärtus, mistõttu me ei määranud index-meetodit, nagu me tegime kirjeid lisava marsruudi puhul.
Eeldades, et veebiserver juba töötab, laadige järgmine URL: http://localhost:3000/ar. Veebibrauseris peaksite nägema sarnaseid tulemusi:
CodeSüütaja värskenduse aktiivne kirje
Selles jaotises räägime sellest, kuidas kasutada Active Recordi andmebaasi värskendamiseks. Oletame, et tahame kliendi nime Joe Thomas värskendada Joeks. Lisage ActiveRecordController klassi järgmine meetod:
public function update_order() { $data = [ 'customer_name' => 'Joe', ]; $this->db->where('id', 1); $this->db->update('orders', $data); echo 'order has successfully been updated'; }
siin:
- $data = […] määratleb andmebaasi tabelis uuendatavad väljad ja väärtused.
- $this->db->where('id', 1); määrab uuendamispäringu where-klausli.
- $this->db->update('tellimused', $andmed); genereerib SQL-i värskenduspäringu ja käivitab selle meie andmebaasis.
Ülaltoodud kood loob järgmise SQL-lause:
UPDATE orders SET customer_name = 'Joe' WHERE id = 1;
Uuendame nüüd application/config/routes.php ja lisame järgmise marsruudi:
$route['ar/update'] = 'activerecordcontroller/update_order';
Salvesta muudatused ja laadi järgmine URL veebibrauseris:
Kuvame nüüd andmebaasi kirjed ja vaatame, kas muudatus on jõustunud.
Nagu ülaltoodud pildilt näha, on esimene kirje uuendatud Joe Thomaselt Joeks.
CodeSüütaja Kustuta aktiivne kirje
Nüüd kustutame andmebaasist kirje. Kustutame kirje ID-ga 3. Lisage ActiveRecordControllerile järgmine meetod:
public function delete_order() { $this->db->where('id', 3); $this->db->delete('orders'); echo 'order has successfully been deleted'; }
siin:
- $this->db->where('id', 3); määrab where-klausli.
- $this->db->delete('orders'); kustutab andmebaasi rea tellimuste tabelist where-klausliga määratud kriteeriumide alusel.
Ülaltoodud koodi käivitamiseks laadige järgmine URL oma veebibrauseris: http://localhost:3000/ar/delete.




