CodeSytyttimen aktiivinen tietue: Lisää, päivitä, poista kysely
⚡ Älykäs yhteenveto
CodeIgniter Active Record on suunnittelumalli, jonka avulla malli voi lukea ja kirjoittaa tietokantaan yksinkertaisten ja turvallisten metodiketjujen avulla. Se tukee lisäystä, valintaa, päivitystä ja poistamista eri tietokantamoottorien välillä ilman koodin uudelleenkirjoittamista, ja se parametrisoi syötteen SQL-injektion estämiseksi.

Data on useimpien sovellusten ydin. Se on tallennettava, jotta sitä voidaan analysoida oivallusten saamiseksi ja liiketoimintapäätösten helpottamiseksi. Data tallennetaan yleensä tietokantaan. Tietokannan kanssa vuorovaikutuksessa tärkeimpiä huolenaiheita ovat turvallisuus, helppokäyttöisyys ja tietokannan toimittajakohtaiset Structured Query Language (SQL) -toteutukset.
Active Record on suunnittelumalli, joka helpottaa tietokannan kanssa vuorovaikuttamista turvallisella ja selkeällä tavalla. Active Recordilla on seuraavat edut:
- Lisää, päivitä ja poista tietueita yksinkertaisilla metodiketjuilla.
- Lähettää käyttäjän syötteen turvallisesti parametrien avulla.
- Voit työskennellä useiden tietokantaohjelmien kanssa, kuten MySQL ja SQL Server ilman sovelluskoodin uudelleenkirjoittamista.
- CodeIgniter käyttää taustalla kullekin tietokantamoottorille ominaisia ajureita.
Aktiivisen tietueen käyttö: esimerkki
Tässä opetusohjelmassa käytämme esimerkkitietokantaa, jossa on kaksi taulukkoa, joista toinen sisältää tilaukset ja toinen tiedot. Tässä opetusohjelmassa oletetaan, että sinulla on MySQL tietokanta on asennettu ja käynnissä. Luo opetusohjelman tietokanta suorittamalla seuraavat komentosarjat:
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;
Yllä oleva koodi luo tietokannan nimeltä ci_active_record ja kaksi taulukkoa, orders ja order_details. Kahden taulukon välinen suhde määritellään orders-taulukon saraketunnuksella ja order_details-taulukon order_id-arvolla.
CodeSytyttimen tietokannan konfigurointi
Määritämme nyt sovelluksemme kommunikoimaan tämän tietokannan kanssa. Avaa tietokannan määritystiedosto, joka sijaitsee tiedostossa application/config/database.php, ja etsi seuraavat rivit:
'hostname' => 'localhost', 'username' => '', 'password' => '', 'database' => '',
Päivitä yllä oleva koodi seuraavaan muotoon:
'hostname' => 'localhost', 'username' => 'root', 'password' => 'letmein', 'database' => 'ci_active_record',
Huomautus: sinun on vaihdettava käyttäjätunnus ja salasana vastaaviin MySQL kokoonpano.
Tietokannan kokoonpanotietojen lisäksi meidän on myös kerrottava CodeSytytin tietokantakirjaston lataamiseksi latauksen yhteydessä.
Vaihe 1) Avaa seuraava tiedosto: application/config/autoload.php.
Vaihe 2) Etsi $autoload-taulukon avainkirjastot ja lataa tietokantakirjasto alla olevan kuvan mukaisesti:
$autoload['libraries'] = array('database');
Tässä:
- Yllä oleva koodi lataa tietokantakirjaston sovelluksen käynnistyessä.
CodeSytytin Lisää aktiivinen tietue
Testaustarkoituksiin luomme ohjaimen ja määrittelemme reitit, joiden avulla voimme olla vuorovaikutuksessa sovelluksemme kanssa Active Recordin kautta. Luo uusi tiedosto application/controllers/ActiveRecordController.php ja lisää siihen seuraava koodi:
<?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'; } }
Tässä:
- $data = […] määrittää taulukkomuuttujan data, joka käyttää tietokannan taulukon sarakenimiä taulukkoavaimina ja antaa niille arvot.
- $this->db->insert('orders', $data); kutsuu tietokantakirjaston insert-metodia ja välittää taulukon nimen orders ja taulukkomuuttujan $data. Tämä rivi luo SQL INSERT -lausekkeen käyttäen taulukkoavaimia kenttäniminä ja taulukon arvoja lisättävinä arvoina.
Nyt kun olemme luoneet ohjainmetodin, meidän on luotava reitti, jota kutsumme sen suorittamiseksi. Avaa application/config/routes.php ja lisää seuraava rivi:
$route['ar/insert'] = 'activerecordcontroller/store_order';
Tässä:
- Määrittelemme reitin ar/insert, joka kutsuu ActiveRecordControllerin store_order-metodia.
Käynnistetään nyt web-palvelin menetelmämme testaamiseksi. Suorita seuraava komento käynnistääksesi sisäänrakennetun PHP-palvelimen:
cd C:\Sites\ci-app php -S localhost:3000
Tässä:
- Yllä oleva komento selaa projektihakemistoon ja käynnistää sisäänrakennetun palvelimen portissa 3000.
Lataa seuraavat URL selaimeesi: http://localhost:3000/ar/insertSaat seuraavan tuloksen:
order has successfully been created
Avaa MySQL tutoriaalin tietokantaan ja tarkista tilaustaulukko. Näet juuri luodun rivin, kuten alla olevassa kuvassa näkyy:
CodeSytytin Valitse aktiivinen tietue
Tässä osiossa näemme, kuinka tietokannan tietueet luetaan ja näytetään verkkoselaimessa järjestämättömänä luettelona. Lisää seuraava metodi ActiveRecordControlleriin:
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>"; }
Tässä:
- $query = $this->db->get('orders'); suorittaa valintakyselyn orders-taulukkoa vastaan ja valitsee kaikki kentät.
- kaiku “ Tilauslistaus ”; näyttää HTML-otsikon.
- kaiku “ ”; tulostaa järjestämättömän HTML-luettelon avaavan tagin.
- foreach ($query->result() as $row) {…} käy läpi tietokannasta palautetut tulokset ja echo “ $rivi->asiakkaan_nimi ”; tulostaa asiakkaan_nimen.
Ennen kuin lataat URL, voit lisätä tietokantaan muutaman tietueen lisää. Määritellään nyt reitti SELECT-kyselylle. Avaa application/config/routes.php ja lisää seuraava reitti:
$route['ar'] = 'activerecordcontroller';
Tässä:
- Reitti ar osoittaa ActiveRecordController-luokan index-metodiin. Tämä on oletusarvoinen, minkä vuoksi emme määrittäneet index-metodia, kuten teimme tietueita lisäävälle reitille.
Olettaen, että web-palvelin on jo käynnissä, lataa seuraava URL: http://localhost:3000/arSinun pitäisi nähdä verkkoselaimessasi seuraavanlaisia tuloksia:
CodeSytyttimen päivityksen aktiivinen tietue
Tässä osiossa käsittelemme Active Recordin käyttöä tietokannan päivittämiseen. Oletetaan, että haluamme päivittää asiakkaan nimen Joe Thomas muotoon Joe. Lisää seuraava metodi ActiveRecordController-luokkaan:
public function update_order() { $data = [ 'customer_name' => 'Joe', ]; $this->db->where('id', 1); $this->db->update('orders', $data); echo 'order has successfully been updated'; }
Tässä:
- $data = […] määrittää kentät ja arvot, jotka haluamme päivittää tietokantataulukossa.
- $this->db->where('id', 1); määrittää päivityskyselyn where-lausekkeen.
- $this->db->update('tilaukset', $data); luo SQL-päivityskyselyn ja suorittaa sen tietokantaamme vastaan.
Yllä oleva koodi tuottaa seuraavan SQL-lausekkeen:
UPDATE orders SET customer_name = 'Joe' WHERE id = 1;
Päivitetään nyt application/config/routes.php ja lisätään seuraava reitti:
$route['ar/update'] = 'activerecordcontroller/update_order';
Tallenna muutokset ja lataa seuraavat URL verkkoselaimessa:
Näytämme nyt tietokannan tiedot ja katsomme, ovatko muutokset tulleet voimaan.
Kuten yllä olevasta kuvasta näkyy, ensimmäinen tietue on päivitetty Joe Thomasista Joeksi.
CodeSytytin Poista aktiivinen tietue
Poistamme nyt tietueen tietokannasta. Poistamme tietueen, jonka id on 3. Lisää seuraava metodi ActiveRecordControlleriin:
public function delete_order() { $this->db->where('id', 3); $this->db->delete('orders'); echo 'order has successfully been deleted'; }
Tässä:
- $this->db->where('id', 3); asettaa where-lausekkeen.
- $this->db->delete('orders'); poistaa tietokannan rivin orders-taulukosta where-lausekkeen avulla asetettujen kriteerien perusteella.
Suorittaaksesi yllä olevan koodin, lataa seuraava URL verkkoselaimessasi: http://localhost:3000/ar/delete.




