Înregistrare activă Codeigniter: Inserați, selectați, actualizați, ștergeți

Cuprins:

Anonim

Datele sunt linia genealogică a majorității aplicațiilor. Datele trebuie stocate în așa fel încât să poată fi analizate în continuare pentru a oferi informații și a facilita deciziile comerciale. Datele sunt de obicei stocate în baza de date. Printre principalele preocupări la interacțiunea cu baza de date se numără securitatea, ușurința accesului și implementările specifice ale furnizorului de baze de date ale Structured Query Language (SQL).

Înregistrarea activă este un model de proiectare care facilitează interacțiunea cu baza de date într-un mod ușor, sigur și elocvent.

Înregistrarea activă are următoarele avantaje

  • Inserați, actualizați și ștergeți înregistrări cu metode simple de lanțuri de înregistrări active
  • Trimite datele introduse de utilizator într-un mod sigur utilizând parametri
  • Vă permite să lucrați cu mai multe motoare de baze de date, cum ar fi MySQL, SQL Server etc., fără a rescrie codul aplicației
  • CodeIgniter folosește drivere specifice fiecărui motor de baze de date din fundal.

În acest tutorial, veți învăța:

  • Cum se folosește Active Record: Exemplu
  • Configurarea bazei de date CodeIgniter
  • CodeIgniter Insert Active Record
  • CodeIgniter Selectați înregistrare activă
  • Actualizare înregistrare activă CodeIgniter
  • CodeIgniter Delete Active Record

Cum se folosește Active Record: Exemplu

În acest tutorial, vom discuta baza de date tutoriale. Vom avea două tabele, una cu comenzi cealaltă cu detalii.

Acest tutorial presupune că aveți instalată și rulată baza de date MySQL.

Rulați următoarele scripturi pentru a crea baza de date tutoriale:

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;

Codul de mai sus creează o bază de date numită ci_active_record și creează două tabele și anume ordine și ordine_detalii. Relația dintre cele două tabele este definită de codul coloanei din comenzi și de comanda_id în tabelul comenzi_detalii.

Configurarea bazei de date CodeIgniter

Vom configura acum aplicația noastră pentru a putea comunica cu această bază de date.

Deschideți fișierul de configurare a bazei de date aflat în application / config / database.php

localizați următoarele linii în fișierul de configurare

'hostname' => 'localhost','username' => '','password' => '','database' => '',

Actualizați codul de mai sus la următorul

'hostname' => 'localhost','username' => 'root','password' => 'letmein','database' => 'ci_active_record',

Notă: va trebui să înlocuiți numele de utilizator și parola cu cele care se potrivesc cu configurația dvs. MySQL.

În plus față de detaliile de configurare a bazei de date, trebuie să îi spunem și CodeIgniter să încarce biblioteca de baze de date atunci când se încarcă

Pasul 1) Deschideți următorul fișier application / config / autoload.php

Pasul 2) Găsiți bibliotecile de chei ale matricei $ autoload și încărcați biblioteca de baze de date așa cum se arată mai jos

$autoload['libraries'] = array('database');

AICI,

  • Codul de mai sus încarcă biblioteca de baze de date la pornirea aplicației

CodeIgniter Insert Active Record

În scopuri de testare, vom crea un controler și rute definite pe care le vom folosi pentru a interacționa cu aplicația noastră prin înregistrare activă.

Creați un nou fișier application / controllers / ActiveRecordController.php

Adăugați următorul cod la ActiveRecordController.php

 '2018-12-19','customer_name' => 'Joe Thomas','customer_address' => 'US'];$this->db->insert('orders', $data);echo 'order has successfully been created';}}

AICI,

  • $ data = [...] definește o variabilă matrice de date care utilizează numele tabelelor bazei de date ca chei matrice și le atribuie valori
  • $ this-> db-> insert ('comenzi', $ date); apelează metoda de inserare a bibliotecii bazei de date, trece în parametru numele comenzilor și variabila matricei $ data. Această linie generează instrucțiunea SQL INSERT utilizând tastele matrice ca nume de câmp și valorile matricei ca valori care trebuie inserate în baza de date.

Acum că am creat cu succes metoda controlerului pentru înregistrarea activă, va trebui acum să creăm un traseu pe care îl vom apela pentru a executa metoda controlerului.

Acum deschideți routes.php în application / config / routes.php

adăugați următoarea linie la trasee

$route['ar/insert'] = 'activerecordcontroller/store_order';

AICI,

  • Definim un traseu ar / insert care apelează store_order-ul ActiveRecordController.

Să începem acum serverul web pentru a ne testa metoda.

Rulați următoarea comandă pentru a porni serverul încorporat pentru PHP

cd C:\Sites\ci-appphp -S localhost:3000

AICI,

  • Browserul de comandă de mai sus către linia de comandă și pornește serverul încorporat la portul 3000.

Încărcați următoarea adresă URL în browser

http: // localhost: 3000 / ar / insert

Veți obține următoarele rezultate

order has successfully been created

Deschideți baza de date tutorial MySQL și verificați tabelul comenzilor

Veți putea să rând nou creat, așa cum se arată în imaginea de mai jos

CodeIgniter Selectați înregistrare activă

În această secțiune, vom vedea cum să citim înregistrările pe care le avem în baza de date și să le afișăm în browserul web ca o listă neordonată

Adăugați următoarea metodă la ActiveRecordController

public function index() {$query = $this->db->get('orders');echo "

Orders Listing

";echo "
    ";foreach ($query->result() as $row) {echo "
  • $row->customer_name
  • ";}echo "
";}

AICI,

  • $ query = $ this-> db-> get ('comenzi'); rulează interogarea selectată în tabelul de comenzi selectând toate câmpurile
  • ecou „

    Listarea comenzilor

    ”; afișează un titlu HTML de dimensiunea 3
  • ecou „
      ”; tipărește eticheta de deschidere pentru lista HTML neordonată
    • foreach ($ interogare-> rezultat () ca $ rând) {...} a folosit bucla for pentru a parcurge rezultatele returnate din baza de date. ecou "
    • $ rând-> nume_clijent
    • "; tipărește client_name din baza de date

    Înainte de a încărca următoarea adresă URL, puteți încărca încă câteva înregistrări în baza de date.

    Să definim acum un traseu pentru interogarea SELECT

    Deschideți tabelul application / config / routes.php

    Adăugați următoarea rută

    $route['ar'] = 'activerecordcontroller';

    AICI,

    • Traseul ar indică metoda indexului clasei ActiveRecordController. Acesta este în mod implicit, de aceea nu am specificat metoda indexului așa cum ați făcut pentru ruta care introduce înregistrări

    Presupunând că serverul web rulează deja, încărcați următoarea adresă URL

    http: // localhost: 3000 / ar

    Ar trebui să puteți vedea rezultate care sunt foarte similare cu următoarele în browserul dvs. web

    Actualizare înregistrare activă CodeIgniter

    În această secțiune, vom vorbi despre cum să utilizați înregistrarea activă pentru a actualiza baza de date. Să presupunem că vrem să actualizăm numele clientului Joe Thomas în Joe.

    Adăugați următoarea metodă la clasa ActiveRecordController

    public function update_order() {$data = ['customer_name' => 'Joe',];$this->db->where('id', 1);$this->db->update('orders', $data);echo 'order has successfully been updated';}

    AICI,

    • $ data = […] definește câmpurile și valorile pe care dorim să le actualizăm în tabelul bazei de date
    • $ this-> db-> where ('id', 1); setează clauza unde a interogării de actualizare
    • $ this-> db-> update ('comenzi', $ date); generează interogarea de actualizare SQL și o execută în baza noastră de date.

    Codul de mai sus va produce următoarea instrucțiune SQL

    UPDATE orders SET customer_name = 'Joe' WHERE id = 1;

    Să actualizăm acum routes.php application / config / routes.php

    Adăugați următoarea rută

    $route['ar/update'] = 'activerecordcontroller/update_order';

    Salvați modificările

    Încărcați următoarea adresă URL în browserul web

    Să afișăm acum înregistrările bazei de date și să vedem dacă modificările au fost afectate.

    După cum puteți vedea din imaginea prezentată mai sus, prima înregistrare a fost actualizată de la Joe Thomas la Joe.

    CodeIgniter Delete Active Record

    Acum vom șterge o înregistrare din baza de date. Vom șterge înregistrarea cu id-ul 3.

    Adăugați următoarea metodă la ActiveRecordController

    public function delete_order() {$this->db->where('id', 3);$this->db->delete('orders');echo 'order has successfully been deleted';}

    AICI,

    • $ this-> db-> where ('id', 1); stabilește clauza unde
    • $ this-> db-> delete ('comenzi'); șterge rândul bazei de date din tabelul de comenzi pe baza criteriilor stabilite folosind clauza where.

    Pentru a executa codul de mai sus, încărcați următoarea adresă URL în browserul nostru web

    http: // localhost: 3000 / ar / delete

    rezumat

    În acest tutorial, ați învățat cum să lucrați cu o înregistrare activă pentru a insera, actualiza, șterge și selecta înregistrări din baza de date. Am lucrat cu valori statice pentru a crea înregistrări, actualizare și ștergere. În următorul tutorial, vom crea o interfață cu utilizatorul pe care utilizatorul o poate folosi pentru a crea înregistrări dinamic în baza de date.