Gestire MySQL tramite PHP

Похожие документы
Per poter interagire con un database in rete mediante uno script php bisogna. innanzitutto cerare una connessione. Ciò si ottiene mediante la funzione

Spiegazioni esercizio Gestione Tabella con PHP e MySQL

Connessione con MySQL

Corso base SQLite. Copyright (c) 2015 Antonio Gallo

Connessione con MySQL

2011 Politecnico di Torino 1

Laboratorio Progettazione Web PHP e MySQL. Andrea Marchetti IIT-CNR 2014/2015

Laboratorio Progettazione Web PHP e MySQL. Andrea Marchetti IIT-CNR 2016/2017

MY SQL Guida MySQL di base

Guida introduttiva al PHP

VARIABILI, ASSEGNAZIONE, DECISIONI

PHP E MYSQL CREAZIONE DI UN NUOVO DATABASE DAL PHPMYADMIN

Modulo o Form in Html

Interazione 1 linguaggio PHP con DB MySQL

ASP e Database. A cura di Michele Cavalieri

Laboratorio di Progettazione Web

Utilizzare PHP 5. Le variabili GET e POST

Laboratorio Progettazione Web PHP e MySQL. Andrea Marchetti IIT-CNR 2013/2014

Laboratorio Progettazione Web PHP e MySQL - Lezione 9. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2011/2012

1) Il client(browser utilizzato) invia al server i dati inseriti dall utente. Server

D B M G Il linguaggio HTML

Come realizzare delle select concatenate con PHP e jquery?

Phpmyadmin. Creazione Database

1. Schema concettuale della base di dati PROGETTO CONCETTUALE SCHEMA ER

Manuale SQL. Manuale SQL - 1 -

Programmazione web lato client con JavaScript. Marco Camurri 1

BASI DI DATI Cos è il PHP. Cos è il PHP. Esercitazione su PHP & MySQL

La stampa unione in Word 2007

I.I.S. G. COSSALI - ORZINUOVI DATABASE. Marzo 2017 Prof. Dario Tomasoni 1

liceo B. Russell PROGRAMMAZIONE INDIRIZZO: SCIENTIFICO SCIENZE APPLICATE TRIENNIO: TERZA DISCIPLINA: INFORMATICA

STRUTTURE DI CONTROLLO DEL C++

PHP Survival Kit (Ovvero gestire un database MySQL tramite PHP)

HTML: FORM. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

Gestione di un questionario (originariamente memorizzato in un DB) in XML

Soluzione esercitazione 01

Procedura di login e sessione

Laboratorio Progettazione Web PHP e MySQL - Lezione 9. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2012/2013

Raccolta e memorizzazione dei dati immessi nei moduli dai visitatori

2.4. Creare ed operare con le query

MySQL Database Management System

SISTEMI OPERATIVI, RETI, INTERNET

APPUNTI DI PHP : V INFORMATICA SEZIONE G

ISTRUZIONI IN BREVE SULL USO DEL SITO JOOMLA FASE 1 : REGISTRARSI

RELAZIONE SCRITTA RELATIVA AL PROGRAMMA DI GESTIONE SITO E-COMMERCE

bool mysql_select_db([string database_name [,resource link_identifier]]) Connessione ad un server MySQL vuole conettere

PHP. A. Lorenzi, R. Giupponi, D. Iovino LINGUAGGI WEB. LATO SERVER E MOBILE COMPUTING Atlas. Copyright Istituto Italiano Edizioni Atlas

Anno 2013 Informatica ABACUS

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal

PHP e MySQL. Scripting server-side per accesso a DB MySQL

Il linguaggio SQL: autorizzazioni

WORD PROCESSING.

PHP e Structured Query Language

Corso sul PACCHETTO OFFICE. Modulo Access

Basi di Dati CREAZIONE E POPOLAMENTO DI UNA BASE DI DATI

Istruzioni DCL di SQL. Pag. 119 par.5

Inserire record. Microsoft Access. Inserire/modificare record. Inserire record. Cancellare record. Inserire/modificare record

SQL - Structured Query Language

Jamio openwork data source connector for QlikView

Microsoft Access. Microsoft Access. Maurizio Rebaudengo, Paolo Garza 1. Microsoft Access. Creazione base di dati. Apertura di una base dati

La stampa Unione con MS-Word

VBA Principali Comandi

Linguaggio C. strutture di controllo: strutture iterative. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

Interazione con DBMS remoto. DBMS MS SQL Server: web-hosting Somee

TUTORIAL IMPORTAZIONE DATI DA FOGLIO EXCELL WINKHOUSE

Esercitazione 1 SQL: DDL e DML di base

RELAZIONE E-COMMERCE

Confronto tra stringhe. (modulo) Calcolo della media e della varianza. Ecco un elenco di codici Matlab: - Calcolo valore assoluto (modulo)

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve

SQL quick reference. piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013)

Un client su arduino invia i dati acquisiti ad un database

DISPENSA ACCESS (OFFICE 2010 BETA)

Qualsiasi programma in C++ segue lo schema:

Venere TS Certificati (Guida operativa)

Транскрипт:

Gestire MySQL tramite PHP Copyright (c) 2011 Antonio Gallo (antoniog.web@gmail.com) Il seguente documento è rilasciato sotto licenza Creative Commons 2.5 Attribution Share alike. Per leggere una copia della licenza visita il sito http://creativecommons.org/licenses/by sa/2.5/it/

Indice generale 1 Creazione del database MySQL...3 2 Connettersi al database MySQL tramite PHP...3 3 Inviare query al database: la funzione mysqli_query...4 4 Come verificare che l'operazione di inserimento sia avvenuta con successo?...5 5 Altri tipi di query: DELETE, UPDATE...6 5.1 DELETE...6 5.2 UPDATE...7 6 Estrarre la prima riga da una tabella MySQL...7 7 Estrarre tutte le righe da una tabella MySQL...8 8 Una caratteristica del PHP...10 9 Un approccio alternativo...11 10 Conoscere il numero delle righe estratte...12 11 Un esempio concreto...13 12 Estraiamo e mostriamo le righe già inserite...15 13 Puliamo i dati prima di inserirli all'interno del database...16

1 Creazione del database MySQL Andremo ora a creare il database che utilizzeremo per imparare come far interagire il PHP con MySQL. Nella cartella 4 del corso è presente un file sql chiamato sql.sql contenente le istruzioni per creare il database giornale e la tabella articoli. Basta lanciare tale codice sql tramite phpmyadmin: CREATE DATABASE giornale; USE giornale; CREATE TABLE articoli ( id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, titolo CHAR(200) NOT NULL, categoria VARCHAR(200) NOT NULL, autore VARCHAR(200) NOT NULL, articoli INT NOT NULL, testo TEXT NOT NULL, visite int not null ); Nei prossimi capitoli impareremo come connetterci a tale database e come interagire con esso per mezzo del PHP. 2 Connettersi al database MySQL tramite PHP File: connetti.php Prima di poter eseguire query al database, cioè prima di poter interagire con esso tramite il PHP, è necessario che il PHP si connetta al database. Per connettersi al database MySQL tramite il PHP sono necessari i seguenti 4 parametri: l'host MySQL l'utente MySQL con il quale accedete al database (solitamente root) la password dell'utente il nome del database La sintassi PHP per connettersi è scritta all'interno del file connetti.php ed è la seguente: $host = 'localhost'; $user = 'root'; $password = 'Nnppdclp12vag'; $dbname = 'giornale';

$mysqli = mysqli_connect($host, $user, $password, $dbname); if (mysqli_connect_errno($mysqli)) echo "Errore nella connessione. Verificare i parametri nel file connetti.php: ". mysqli_connect_error(); Per connettersi all'host è necessario utilizzare la funzione mysqli_connect. Tale funzione restituisce un parametro di connessione che deve essere salvato in una variabile per poter essere utilizzato in seguito. Nel nostro caso tale parametro è stato salvato nella variabile $mysqli. Il seguente pezzo di codice: if (mysqli_connect_errno($mysqli)) echo "Errore nella connessione. Verificare i parametri nel file connetti.php: ". mysqli_connect_error(); Serve per verificare che la connessione sia andata a buone fine e in caso contrario scrivere che errore nella connessione si è verificato. 3 Inviare query al database: la funzione mysqli_query File: insert.php Per inviare delle query al database bisogna crearle (stringhe di testo) e poi inviarle con la funzione mysqli_query. Nel seguente esempio si inseriranno dei dati all'interno della tabella articoli presente nel database giornale (la tabella e il database sono gli stessi già visti nella lezione precedente). Il codice PHP è il seguente (file insert.php): include ("connetti.php"); $query = " insert into articoli (titolo,autore,categoria,visite) values ('HP regala i notebook','antonio','informatica','345667'); "; //verifico la query mysqli_query($mysqli, $query); Come si vede all'inizio del file viene incluso il file connetti.php tramite l'istruzione include:

include ("connetti.php"); Nel codice soprastante abbiamo creato una variabile chiamata $query contenente la query che vogliamo mandare al database. Da notare che è la stessa query che avremmo usato se ci fossimo connessi direttamente a MySQL senza passare per il PHP: $query = " insert into articoli (titolo,autore,categoria,visite) values ('HP regala i notebook','antonio','informatica','345667'); "; Per inviare la query appena creta al database è necessario usare la funzione mysqli_query. Tale funzione si aspetta due argomenti. Il primo è il parametro di connessione salvato nella variabile $mysqli, il secondo è la query da eseguire: mysqli_query($mysqli, $query); La query è stata inviata e quindi il nuovo articolo è stato inserito nella tabella articoli. 4 Come verificare che l'operazione di inserimento sia avvenuta con successo? File: insert_check.php Nelle query di inserimento (INSERT INTO..) la funzione mysqli_query restituisce true o false in funzione del fatto che la query si a andata o buon fine oppure no. Quindi nel caso dell'esempio precedente, per sapere se l'articolo è stato inserito correttamente si poteva scrivere: include ("connetti.php"); $query = " insert into articoli (titolo,autore,categoria,visite) values ('HP regala i notebook','antonio','informatica','345667'); "; //verifico la query if (mysqli_query($mysqli,$query)) echo "inserimento avvenuto correttamente"; else echo "errore: contatta l'amministratore";

Come si vede è stato chiesto al PHP se la query è andata a buon fine oppure no con la seguente istruzione if (mysqli_query($mysqli,$query)) la quale restituisce vero o falso e può quindi essere utilizzata all'interno di una istruzione if. 5 Altri tipi di query: DELETE, UPDATE Per cancellare o modificare dati in una tabella del database per mezzo di PHP si segue lo stesso procedimento già illustrato nel caso dell' inserimento di dati. La funzione da usare è sempre la stessa: mysqli_query. Anche nel caso di DELETE e UPDATE la funzione mysqli_query restituisce true (la query è andata a buon fine) o false (la query non è andata a buon fine) 5.1 DELETE File: delete.php Esempio: cancellare dalla tabella articoli l'articolo avente id=8 include ("connetti.php"); $query = " delete from articoli where autore='antonio'; "; //verifico la query mysqli_query($mysqli,$query); Come detto, anche in questo caso se avessi voluto verificare il buon esito dell'operazione di eliminazione avrei potuto scrivere: if (mysqli_query($mysqli, $query)) else

5.2 UPDATE File: update.php Esempio: modificare il titolo dell'articoli avente id=7 include ("connetti.php"); $query = " update articoli set titolo='errore: Hp non regala notebook' where id=2; "; //verifico la query if (mysqli_query($mysqli, $query)) echo "ok"; else echo "errore"; 6 Estrarre la prima riga da una tabella MySQL File: select_riga.php Per estrarre dati da una tabella MySQL (SELECT query) si usa ancora la funzione mysqli_query, ma questa volta il risultato di tale funzione non sarà più semplicemente true o false, ma sarà l'insieme delle righe richieste. Più precisamente, nel caso la query SELECT vada a buon fine la funzione mysqli_query restituirà le righe della tabella richieste, altrimenti restituirà false. Per ottenere la prima riga dalla tabella articoli si procede come mostrato di seguito. Si crea la query: $query = " select titolo,autore,categoria,testo from articoli; "; La si invia al database e si salva il risultato all'interno di una variabile. Tale risultato sarà il set di

righe estratte. //e ottengo un risultato $result = mysqli_query($mysqli,$query); La variabile $result, che contiene le righe estratte, non è direttamente utilizzabile. Si usa quindi la funzione mysqli_fetch_array sulla variabile $result per ottenere la prima riga estratta sotto forma di array associativo: //estraggo la prima riga $riga = mysqli_fetch_array($result); La variabile $riga avrà la forma di un array associativo le cui chiavi sono uguali ai campi della tabella articoli. In pratica sarà un array contenente tutti i dati della prima riga della tabella. Sarà quindi possibile stampare tali dati stampando i vari elementi dell'array associativo $riga: //stampo la riga echo "<div>\n"; echo "<div>". $riga['titolo']. "</div>\n"; echo "<div>". $riga['autore']. "</div>\n"; echo "<div>". $riga['categoria']. "</div>\n"; echo "<div>". $riga['testo']. "</div>\n"; echo "</div>\n"; Per ottenere la riga successiva a quella appena richiesta (quindi la seconda), basta applicare nuovamente la funzione mysqli_fetch_array sullo stesso set di risultati: $riga = mysqli_fetch_array($result); Questa volta la variabile $riga conterrà i dati della seconda riga della tabella articoli, che si potranno stampare con le medesime istruzioni viste sopra: //stampo la seconda riga echo "<div>\n"; echo "<div>". $riga['titolo']. "</div>\n"; echo "<div>". $riga['autore']. "</div>\n"; echo "<div>". $riga['categoria']. "</div>\n"; echo "<div>". $riga['testo']. "</div>\n"; echo "</div>\n"; 7 Estrarre tutte le righe da una tabella MySQL

File: select.php Per stampare tutte le righe della tabella sarà necessario iterare le stesse operazioni viste al capitolo 6 per ogni riga. Sarà quindi necessario usare un ciclo. Per questo tipo di operazioni si usa solitamente il ciclo while come mostrato nel codice sottostante. Nel seguente esempio vengono estratti, tramite una query SELECT, tutti gli articoli dalla tabella articoli: include ("connetti.php"); $query = " select titolo,autore,categoria,testo from articoli; "; //verifico la query //e ottengo un risultato $result = mysqli_query($mysqli,$query); // stampo tutti i risultati while ($riga = mysqli_fetch_array($result)) echo "<div>\n"; echo "<div>". $riga['titolo']. "</div>\n"; echo "<div>". $riga['autore']. "</div>\n"; echo "<div>". $riga['categoria']. "</div>\n"; echo "<div>". $riga['testo']. "</div>\n"; echo "</div>\n"; Come detto, nel caso di una SELECT query, la funzione mysqli_query restituisce l'insieme di righe estratte dalla tabella del database (nel caso la query non vada a buon fine restituisce false). Nel codice soprastante l'insieme di righe estratte è stato salvato nella variabile $result, che è quindi il risultato della SELECT query. Come abbiamo visto nel capitolo 6 il risultato della SELECT query (la variabile $result) deve essere data in ingresso alla funzione mysqli_fetch_array, la quale, usata all'interno del ciclo while come indicato, serve a scorrere le righe estratte una dopo l'altra. Ad ogni iterazione del ciclo while la funzione mysqli_fetch_array scorre una riga tra quelle estratte dal database e ne salva tutto il contenuto in un array associativo ($riga nel codice soprastante).

while ($riga = mysqli_fetch_array($result)) Come abbiamo visto le chiavi dell'array associativo creato ($riga) sono le colonne estratte dalla tabella (cioè in questo caso titolo,autore,categoria,testo). Si stampano i valori delle varie righe: echo "<div>". $riga['titolo']. "</div>\n"; echo "<div>". $riga['autore']. "</div>\n"; echo "<div>". $riga['categoria']. "</div>\n"; echo "<div>". $riga['testo']. "</div>\n"; 8 Una caratteristica del PHP File: con_echo.php Abbiamo capito che il PHP e l'html possono essere mischiati, ma quanto possono esserlo? Ecco un esempio per capirlo. Si consideri il seguente codice PHP: <?php $a = 2; if ($a == 2) echo "<h2>esempio</h2>"; echo "<p>questo è il contenuto dell'esempio</p>";?> Nel codice soprastante viene definita la variabile $a = 2. Successivamente si fa un controllo con l'istruzione if: solo se la variabile $a è uguale a 2 ($a == 2) viene stampato del codice HTML dentro il corpo dell'if (tramite l'istruzione echo).

File: senza_echo.php Ma il codice soprastante può anche essere riscritto nel seguente modo: <?php $a = 2; if ($a == 2)?> <h2>esempio</h2> <p>questo è il contenuto dell'esempio</p> <?php?> Questa volta dentro il corpo dell' if (tra le due parentesi graffe) è stato chiuso il tag PHP (?> ) e il codice HTML è stato scritto direttamente (senza usare l'istruzione echo). Dopo il codice HTML viene riaperto il tag PHP ( <?php ) e chiusa la graffa (dell'istruzione if). Questo metodo può sembrare un po' strano ma è identico al primo: anche se il codice HTML è stato scritto direttamente, fa sempre parte del blocco dell' if e viene eseguito solo e soltanto se la condizione ($a == 2) è soddisfatta. 9 Un approccio alternativo File: select_alt.php Un approccio alternativo per stampare tutte le righe estratte è il seguente. Si immagini di aver estratto tutte le righe della tabella articoli e salvato il risultato nella variabile $result: $query = " select titolo,autore,categoria,testo from articoli; ";

//verifico la query //e ottengo un risultato $result = mysqli_query($mysqli, $query); Abbiamo visto che per stampare tutte le righe estratte si deve usare un ciclo while. Ecco come potremmo modificare il ciclo in modo da scrivere meno codice HTML possibile tramite il PHP: //stampo tutti i risultati while ($riga = mysqli_fetch_array($result))?> <div> <div><?php echo $riga['titolo'];?></div> <div><?php echo $riga['autore'];?></div> <div><?php echo $riga['categoria'];?></div> <div><?php echo $riga['testo'];?></div> </div> <?php?> 10 Conoscere il numero delle righe estratte File: numero_righe.php Per conoscere il numero di righe estratte con una SELECT query è possibile usare la funzione mysqli_num_rows, come indicato nel seguente modo: include ("connetti.php"); $query = " select titolo,autore,categoria,testo from articoli; "; //verifico la query //e ottengo un risultato $result = mysqli_query($mysqli, $query); //richiedo il numero di righe passando il risultato della SELECT query alla funzione mysql_num_rows $numero_righe = mysqli_num_rows($result); //stampo il numero di righe echo $numero_righe;

Il risultato della funzione mysqli_num_rows è il numero di righe estratte. Tale funzione richiede, come unico argomento, il risultato di una SELECT query (ottenuto grazie alla funzione mysqli_query). Tale risultato può essere salvato in una variabile per essere usato in seguito: $numero_righe = mysqli_num_rows($result); 11 Un esempio concreto File: insert_form.php Nel seguente esempio eseguiremo l'inserimento di una serie di articoli nel database giornale tramite un form HTML. Il codice completo del file insert_form.php è il seguente: include ("connetti.php"); if (isset($_post['invia'])) //ricevo le variabili attraverso il $_POST $titolo = $_POST['titolo']; $autore = $_POST['autore']; $categoria = $_POST['categoria']; $testo = $_POST['testo']; $query = " insert into articoli (titolo,autore,categoria,testo) values ('$titolo','$autore','$categoria','$testo'); "; //invio la query mysqli_query($mysqli, $query);?> <form action="insert_form.php" method="post"> <table> <tr> <td>titolo:</td> <td><input type="text" name="titolo" value=""></td> </tr> <tr> <td>autore:</td> <td><input type="text" name="autore" value=""></td> </tr> <tr> <td>categoria:</td> <td> <select name="categoria"> <option

value="economia">economia</option> <option value="politica">politica</option> <option value="informazione">informazione</option> </select> </td> </tr> <tr> <td>messaggio:</td> <td><textarea name="testo"></textarea></td> </tr> <tr> <td><input type="submit" name="invia" value="invia"></td> </tr> </table> </form> IL form, presente alla fine del file insert_form.php, ha 4 campi di input aventi i seguenti name: Campo di testo name="titolo" Menù a tendina name="categoria" Textarea name="messaggio" Pulsante name="invia" Una volta premuto il pulsante di invio i dati verranno inviati alla pagina stessa (si veda l'attributo action del form) e l'array associativo $_POST avrà la seguente struttura: $_POST['titolo'] conterrà il titolo inserito nel campo di testo $_POST['categoria'] conterrà il valore della categoria selezionata $_POST['messaggio'] conterrà il testo scritto nell'area di testo $_POST['invia'] conterrà il valore dell'attributo value del pulsante Nella parte superiore del file è presente il codice PHP utilizzato per raccogliere i dati ed inserirli nel database: include ("connetti.php"); if (isset($_post['invia'])) //ricevo le variabili attraverso il $_POST $titolo = $_POST['titolo']; $autore = $_POST['autore']; $categoria = $_POST['categoria']; $testo = $_POST['testo']; $query = " insert into articoli (titolo,autore,categoria,testo) values ('$titolo','$autore','$categoria','$testo'); ";

//invio la query mysqli_query($mysqli, $query); Prima si controlla che i dati esistano (vedi lezione 2): if (isset($_post['invia'])) In caso affermativo li si acquisisce attraverso l'array associativo $_POST: //ricevo le variabili attraverso il $_POST $titolo = $_POST['titolo']; $autore = $_POST['autore']; $categoria = $_POST['categoria']; $testo = $_POST['testo']; Poi si crea la query di inserimento: $query = " insert into articoli (titolo,autore,categoria,testo) values ('$titolo','$autore','$categoria','$testo'); "; Infine si manda la query al database: //invio la query mysqli_query($mysqli, $query); 12 Estraiamo e mostriamo le righe già inserite File: insert_form_select.php Il seguente esempio è simile a quello visto nel capitolo 11 con l'unica differenza che nella parte superiore al form vengono stampati tutte le righe gìà inserire nella tabella articoli. L'estrazione degli articoli dal database viene effettuata subito dopo l'inserimento e prima del form. Ecco il codice aggiunto: $query = " select * from articoli; "; //e ottengo un risultato $result = mysqli_query($mysqli, $query); //stampo tutti i risultati while ($riga = mysqli_fetch_array($result))?> <div class="articolo"> <div class="titolo_articolo"><?php echo

$riga['titolo'];?></div> <div class="autore_articolo">scritto da: <?php echo $riga['autore'];?></div> <div class="categoria_articolo">categoria:<?php echo $riga['categoria'];?></div> <div class="testo_articolo"><?php echo nl2br($riga['testo']);?></div> </div> <?php?> Come abbiamo già visto nei capitoli precedenti, per estrarre tutte le righe dalla tabella articoli si esegue una select query e poi si cicla con un ciclo while sul risultato e si crea l'html. 13 Puliamo i dati prima di inserirli all'interno del database Uno degli aspetti principali di un'applicazione web è la sicurezza. Per fare in modo che il database non sia attaccabile da un malintenzionato è necessario che i dati che vengono inseriti non siano potenzialmente dannosi. Per fare questo è necessario pulirli prima di inserirli. Il PHP mette a disposizione una funzione, chiamata mysqli_real_escape_string, che serve appunto per pulire i dati prima di inviarli al database in modo che siano innocui. Ecco come usarla: $dato_sicuro = mysqli_real_escape_string($mysqli, $dato_non_sicuro); Come si vede dall'esempio superiore la funzione mysqli_real_escape_string richiede in ingresso due argomenti. Il primo è il parametro di connessione ottenuto in fase di connessione al database (vedi 2), il secondo è il dato pericoloso che deve essere pulito. La funzione restituisce il medesimo valore ma ripulito, quindi sicuro. Gli attacchi al database fatti da malintenzionati, quando riescono, vengono chiamati sql injections. In pratica si tratta di invii di codice sql arbitrario al database. Tali attacchi, quando vanno a buon fine, possono anche portare alla completa cancellazione del vostro database o, in casi minori, ad una sua parte. Bisogna sempre ricordarsi di pulire i dati che arrivano dall'esterno (ad esempio tramite un form) prima di inviarli al database!! File: insert_pulisci.php Il seguente esempio, preso dal file insert_pulisci.php, mostra come dovrebbe essere eseguito l'inserimento dei dati in arrivo dal form volendo proteggere il database da attacchi:

if (isset($_post['invia'])) //ricevo le variabili attraverso il $_POST $titolo = mysqli_real_escape_string($mysqli, $_POST['titolo']); $autore = mysqli_real_escape_string($mysqli, $_POST['autore']); $categoria = mysqli_real_escape_string($mysqli, $_POST['categoria']); $testo = mysqli_real_escape_string($mysqli, $_POST['testo']); $query = " insert into articoli (titolo,autore,categoria,testo) values ('$titolo','$autore','$categoria','$testo'); "; //invio la query mysqli_query($mysqli, $query); Come si vede i 4 valori acquisiti, $_POST['titolo'], $_POST['autore'], $_POST['categoria'] e $_POST['testo'] vengono puliti con la funzione mysqli_real_escape_string prima di essere mandati al database attraverso la query con la funzione mysqli_query. Ad esempio, ecco come il valore del titolo è stato pulito e salvato in una nuova variabile chiamata $titolo: $titolo = mysqli_real_escape_string($mysqli, $_POST['titolo']);