{"id":874,"date":"2011-12-15T00:01:07","date_gmt":"2011-12-14T23:01:07","guid":{"rendered":"http:\/\/www.manuelmarangoni.it\/sir-bit\/?p=874"},"modified":"2016-01-14T12:26:55","modified_gmt":"2016-01-14T11:26:55","slug":"tutorial-php-e-mysql-connessione-e-gestione-di-un-database-select-insert-update-delete-parte-01","status":"publish","type":"post","link":"https:\/\/www.manuelmarangoni.it\/sir-bit\/874\/tutorial-php-e-mysql-connessione-e-gestione-di-un-database-select-insert-update-delete-parte-01\/","title":{"rendered":"Tutorial PHP e MYSQL &#8211; Connessione e gestione di un database &#8211; Select, insert, update, delete &#8211; parte 01"},"content":{"rendered":"<p>Su Sir Bit vengono trattati spesso articoli che presumono una conoscenza di base del rapporto tra php e mysql.<br \/>\nConoscere come il php si interfaccia al mysql, come <strong>aprire una connessione e come inserire, modificare ed eliminare record da un database<\/strong> \u00e8 essenziale in un sito internet che si basa su questi due linguaggi di programmazione.<\/p>\n<p>Lo scopo di questo articolo \u00e8 quindi di dare un&#8217;infarinatura di base (ma completa) su come gestire un database mysql attraverso il php. Di conseguenza, per chi \u00e8 gi\u00e0 rodato questo articolo sar\u00e0 utile pi\u00f9 che altro come promemoria in caso di incertezze.<br \/>\nAlla fine di questo tutorial dovreste <strong>essere in grado di gestire in autonomia un sito dinamico che si appoggia su un database di tipo mysql<\/strong>.<br \/>\nSi danno per scontate alcune conoscenze elementari: l&#8217;uso di php, come costruire un sito in php e la capacit\u00e0 di creare tabelle in un database mysql (basta anche l&#8217;uso del diffuso phpmyadmin).<\/p>\n<p>Nello specifico vedremo:<br \/>\n&#8211; funzioni di connessione al database, con controllo degli errori;<br \/>\n&#8211; funzioni di inserimento, modifica e cancellazione di record dal database;<br \/>\n&#8211; funzioni legate all&#8217;ordinamento dei dati estratti;<br \/>\n&#8211; come estrarre solo determinati record, in base a una determinata stringa, oppure estrarre solo un certo numero di record;<br \/>\n&#8211; funzioni php di base utili durante la gestione del database.<\/p>\n<p>Gli esempi saranno commentati dove necessario.<!--more--><\/p>\n<h2>Connessione e struttura di base<\/h2>\n<p>Il database su cui andremo a lavorare avr\u00e0 questa semplice struttura (copiatelo e importatelo nel vostro database):<\/p>\n\n<div class=\"wp_syntax\">\n<table>\n<tbody>\n<tr>\n<td class=\"line_numbers\">\n<pre>1\r\n2\r\n3\r\n4\r\n5\r\n6\r\n7\r\n8\r\n9\r\n10\r\n11<\/pre>\n<\/td>\n<td class=\"code\">\n<pre class=\"mysql\" style=\"font-family: monospace;\"><span style=\"color: #990099; font-weight: bold;\">CREATE<\/span> <span style=\"color: #990099; font-weight: bold;\">TABLE<\/span> <span style=\"color: #990099; font-weight: bold;\">IF <span style=\"color: #cc0099; font-weight: bold;\">NOT<\/span> EXISTS<\/span> <span style=\"color: #008000;\">`clienti`<\/span> <span style=\"color: #ff00ff;\">(<\/span>\r\n  <span style=\"color: #008000;\">`id`<\/span> <span style=\"color: #999900; font-weight: bold;\">int<\/span><span style=\"color: #ff00ff;\">(<\/span><span style=\"color: #008080;\">11<\/span><span style=\"color: #ff00ff;\">)<\/span> <span style=\"color: #cc0099; font-weight: bold;\">NOT<\/span> <span style=\"color: #9900ff; font-weight: bold;\">NULL<\/span> <span style=\"color: #ff9900; font-weight: bold;\">AUTO_INCREMENT<\/span><span style=\"color: #000033;\">,<\/span>\r\n  <span style=\"color: #008000;\">`nome`<\/span> <span style=\"color: #999900; font-weight: bold;\">varchar<\/span><span style=\"color: #ff00ff;\">(<\/span><span style=\"color: #008080;\">255<\/span><span style=\"color: #ff00ff;\">)<\/span> <span style=\"color: #cc0099; font-weight: bold;\">NOT<\/span> <span style=\"color: #9900ff; font-weight: bold;\">NULL<\/span> <span style=\"color: #990099; font-weight: bold;\">DEFAULT<\/span> <span style=\"color: #008000;\">''<\/span><span style=\"color: #000033;\">,<\/span>\r\n  <span style=\"color: #008000;\">`citta`<\/span> <span style=\"color: #999900; font-weight: bold;\">varchar<\/span><span style=\"color: #ff00ff;\">(<\/span><span style=\"color: #008080;\">50<\/span><span style=\"color: #ff00ff;\">)<\/span> <span style=\"color: #cc0099; font-weight: bold;\">NOT<\/span> <span style=\"color: #9900ff; font-weight: bold;\">NULL<\/span> <span style=\"color: #990099; font-weight: bold;\">DEFAULT<\/span> <span style=\"color: #008000;\">''<\/span><span style=\"color: #000033;\">,<\/span>\r\n  <span style=\"color: #990099; font-weight: bold;\">PRIMARY KEY<\/span> <span style=\"color: #ff00ff;\">(<\/span><span style=\"color: #008000;\">`id`<\/span><span style=\"color: #ff00ff;\">)<\/span>\r\n<span style=\"color: #ff00ff;\">)<\/span> <span style=\"color: #990099; font-weight: bold;\">ENGINE<\/span><span style=\"color: #cc0099;\">=<\/span>MyISAM  <span style=\"color: #990099; font-weight: bold;\">DEFAULT<\/span> <span style=\"color: #ff9900; font-weight: bold;\">CHARSET<\/span><span style=\"color: #cc0099;\">=<\/span>latin1 <span style=\"color: #ff9900; font-weight: bold;\">AUTO_INCREMENT<\/span><span style=\"color: #cc0099;\">=<\/span><span style=\"color: #008080;\">4<\/span> <span style=\"color: #000033;\">;<\/span>\r\n\r\n<span style=\"color: #990099; font-weight: bold;\">INSERT<\/span> <span style=\"color: #990099; font-weight: bold;\">INTO<\/span> <span style=\"color: #008000;\">`clienti`<\/span> <span style=\"color: #ff00ff;\">(<\/span><span style=\"color: #008000;\">`id`<\/span><span style=\"color: #000033;\">,<\/span> <span style=\"color: #008000;\">`nome`<\/span><span style=\"color: #000033;\">,<\/span> <span style=\"color: #008000;\">`citta`<\/span><span style=\"color: #ff00ff;\">)<\/span> <span style=\"color: #990099; font-weight: bold;\">VALUES<\/span>\r\n<span style=\"color: #ff00ff;\">(<\/span><span style=\"color: #008080;\">1<\/span><span style=\"color: #000033;\">,<\/span> <span style=\"color: #008000;\">' Mario Rossi'<\/span><span style=\"color: #000033;\">,<\/span> <span style=\"color: #008000;\">'Milano'<\/span><span style=\"color: #ff00ff;\">)<\/span><span style=\"color: #000033;\">,<\/span>\r\n<span style=\"color: #ff00ff;\">(<\/span><span style=\"color: #008080;\">2<\/span><span style=\"color: #000033;\">,<\/span> <span style=\"color: #008000;\">'Lara Verdi'<\/span><span style=\"color: #000033;\">,<\/span> <span style=\"color: #008000;\">'Roma'<\/span><span style=\"color: #ff00ff;\">)<\/span><span style=\"color: #000033;\">,<\/span>\r\n<span style=\"color: #ff00ff;\">(<\/span><span style=\"color: #008080;\">3<\/span><span style=\"color: #000033;\">,<\/span> <span style=\"color: #008000;\">'Giacomo Bianchi'<\/span><span style=\"color: #000033;\">,<\/span> <span style=\"color: #008000;\">'Napoli'<\/span><span style=\"color: #ff00ff;\">)<\/span><span style=\"color: #000033;\">;<\/span><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>La prima cosa da fare \u00e8 richiedere al gestore del dominio su cui avete il sito i <strong>parametri di connessione: host, user, password e nome del database.<\/strong><br \/>\nIn php salveremo queste informazioni in variabili, rispettivamente:<\/p>\n<div class=\"wp_syntax\">\n<table>\n<tbody>\n<tr>\n<td class=\"line_numbers\">\n<pre>1\r\n2\r\n3\r\n4<\/pre>\n<\/td>\n<td class=\"code\">\n<pre class=\"php\" style=\"font-family: monospace;\"><span style=\"color: #000088;\">$db_host<\/span><span style=\"color: #339933;\">=<\/span><span style=\"color: #0000ff;\">\"localhost\"<\/span><span style=\"color: #339933;\">;<\/span>\r\n<span style=\"color: #000088;\">$db_user<\/span><span style=\"color: #339933;\">=<\/span><span style=\"color: #0000ff;\">\"nome_utente\"<\/span><span style=\"color: #339933;\">;<\/span>\r\n<span style=\"color: #000088;\">$db_password<\/span><span style=\"color: #339933;\">=<\/span><span style=\"color: #0000ff;\">\"password\"<\/span><span style=\"color: #339933;\">;<\/span>\r\n<span style=\"color: #000088;\">$db_database<\/span><span style=\"color: #339933;\">=<\/span><span style=\"color: #0000ff;\">\"nome_database\"<\/span><span style=\"color: #339933;\">;<\/span><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Seguir\u00e0 quindi la connessione vera e propria al database. E&#8217; utile eseguire dei controlli di base per verificare che la connessione avvenga; in caso contrario, manderemo a schermo un messaggio di errore tramite la funzione <code>die()<\/code>, che bloccher\u00e0 l&#8217;esecuzione degli script della pagina.<\/p>\n<div class=\"wp_syntax\">\n<table>\n<tbody>\n<tr>\n<td class=\"line_numbers\">\n<pre>1\r\n2\r\n3\r\n4\r\n5\r\n6\r\n7<\/pre>\n<\/td>\n<td class=\"code\">\n<pre class=\"php\" style=\"font-family: monospace;\"><span style=\"color: #666666; font-style: italic;\">\/\/connessione<\/span>\r\n<span style=\"color: #000088;\">$db<\/span> <span style=\"color: #339933;\">=<\/span> <span style=\"color: #990000;\">mysql_connect<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #000088;\">$db_host<\/span><span style=\"color: #339933;\">,<\/span> <span style=\"color: #000088;\">$db_user<\/span><span style=\"color: #339933;\">,<\/span> <span style=\"color: #000088;\">$db_password<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span>\r\n\r\n<span style=\"color: #b1b100;\">if<\/span> <span style=\"color: #009900;\">(<\/span><span style=\"color: #000088;\">$db<\/span> <span style=\"color: #339933;\">==<\/span> <span style=\"color: #009900; font-weight: bold;\">FALSE<\/span><span style=\"color: #009900;\">)<\/span>\r\n\t<span style=\"color: #990000;\">die<\/span> <span style=\"color: #009900;\">(<\/span><span style=\"color: #0000ff;\">\"Errore nella connessione. Verificare i parametri nel file di configurazione\"<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span>\r\n<span style=\"color: #990000;\">mysql_select_db<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #000088;\">$db_database<\/span><span style=\"color: #339933;\">,<\/span> <span style=\"color: #000088;\">$db<\/span><span style=\"color: #009900;\">)<\/span>\r\n\tor <span style=\"color: #990000;\">die<\/span> <span style=\"color: #009900;\">(<\/span><span style=\"color: #0000ff;\">\"Errore nella selezione del database. Verificare i parametri nel file di configurazione\"<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h2>Estrarre i record dal database<\/h2>\n<p>La sintassi base per <strong>interrogare una tabella ed estrarre il contenuto dei suoi campi<\/strong> \u00e8 la seguente:<\/p>\n<div class=\"wp_syntax\">\n<table>\n<tbody>\n<tr>\n<td class=\"line_numbers\">\n<pre>1\r\n2<\/pre>\n<\/td>\n<td class=\"code\">\n<pre class=\"php\" style=\"font-family: monospace;\"><span style=\"color: #000088;\">$q<\/span><span style=\"color: #339933;\">=<\/span><span style=\"color: #0000ff;\">\"SELECT * FROM clienti\"<\/span><span style=\"color: #339933;\">;<\/span>\r\n<span style=\"color: #000088;\">$query<\/span><span style=\"color: #339933;\">=<\/span><span style=\"color: #990000;\">mysql_query<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #000088;\">$q<\/span><span style=\"color: #339933;\">,<\/span> <span style=\"color: #000088;\">$db<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>La due righe qui sopra possono essere riunite in un&#8217;unica riga:<\/p>\n<div class=\"wp_syntax\">\n<table>\n<tbody>\n<tr>\n<td class=\"line_numbers\">\n<pre>1<\/pre>\n<\/td>\n<td class=\"code\">\n<pre class=\"php\" style=\"font-family: monospace;\"><span style=\"color: #000088;\">$query<\/span><span style=\"color: #339933;\">=<\/span><span style=\"color: #990000;\">mysql_query<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #0000ff;\">\"SELECT * FROM clienti\"<\/span><span style=\"color: #339933;\">,<\/span> <span style=\"color: #000088;\">$db<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>\u00e8 una pratica che per\u00f2 sconsiglio ai principianti, perch\u00e9 nel primo caso avrete modo di stampare la query a schermo (<code>echo $q<\/code>) in caso di errori, in modo da &#8220;spulciarla&#8221; in ogni suo punto.<br \/>\nIl secondo parametro (<code>$db<\/code>) in questo caso \u00e8 opzionale e pu\u00f2 essere tolto: servirebbe nel caso di connessioni a pi\u00f9 database, in modo da sapere a quale fare riferimento.<\/p>\n<p>Con questa query abbiamo estratto i record di tutti i campi della tabella clienti. Se avessimo voluto <strong>estrarre solo l&#8217;id e il nome dei clienti<\/strong>, la query andrebbe cos\u00ec modificata:<\/p>\n<div class=\"wp_syntax\">\n<table>\n<tbody>\n<tr>\n<td class=\"line_numbers\">\n<pre>1<\/pre>\n<\/td>\n<td class=\"code\">\n<pre class=\"php\" style=\"font-family: monospace;\"><span style=\"color: #000088;\">$q<\/span><span style=\"color: #339933;\">=<\/span><span style=\"color: #0000ff;\">\"SELECT id, nome FROM clienti\"<\/span><span style=\"color: #339933;\">;<\/span><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>A questo punto, per\u00f2, <strong>come faccio a recuperarli e a stamparli a schermo?<\/strong> Vediamo prima il codice, che poi spiegher\u00f2 nei dettagli.<\/p>\n<div class=\"wp_syntax\">\n<table>\n<tbody>\n<tr>\n<td class=\"line_numbers\">\n<pre>1\r\n2\r\n3\r\n4\r\n5\r\n6\r\n7\r\n8\r\n9\r\n10\r\n11\r\n12\r\n13\r\n14\r\n15\r\n16\r\n17\r\n18\r\n19<\/pre>\n<\/td>\n<td class=\"code\">\n<pre class=\"php\" style=\"font-family: monospace;\"><span style=\"color: #000088;\">$num<\/span><span style=\"color: #339933;\">=<\/span><span style=\"color: #990000;\">mysql_num_rows<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #000088;\">$query<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span> <span style=\"color: #666666; font-style: italic;\">\/\/numero totale di record trovati con la query<\/span>\r\n\r\n<span style=\"color: #666666; font-style: italic;\">\/\/se sono stati trovati dei record, allora stampo la tabella che li contiene<\/span>\r\n<span style=\"color: #b1b100;\">if<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #000088;\">$num<\/span><span style=\"color: #339933;\">&gt;<\/span><span style=\"color: #cc66cc;\">0<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #009900;\">{<\/span>\r\n\t<span style=\"color: #b1b100;\">echo<\/span> <span style=\"color: #0000ff;\">\"&lt;table border='1'&gt;\"<\/span><span style=\"color: #339933;\">;<\/span>\r\n\r\n\t<span style=\"color: #b1b100;\">while<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #000088;\">$row<\/span><span style=\"color: #339933;\">=<\/span><span style=\"color: #990000;\">mysql_fetch_array<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #000088;\">$query<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #009900;\">{<\/span>\r\n\t\t<span style=\"color: #000088;\">$id<\/span><span style=\"color: #339933;\">=<\/span><span style=\"color: #000088;\">$row<\/span><span style=\"color: #009900;\">[<\/span><span style=\"color: #0000ff;\">\"id\"<\/span><span style=\"color: #009900;\">]<\/span><span style=\"color: #339933;\">;<\/span>\r\n\t\t<span style=\"color: #000088;\">$nome<\/span><span style=\"color: #339933;\">=<\/span><span style=\"color: #000088;\">$row<\/span><span style=\"color: #009900;\">[<\/span><span style=\"color: #0000ff;\">\"nome\"<\/span><span style=\"color: #009900;\">]<\/span><span style=\"color: #339933;\">;<\/span>\r\n\t\t<span style=\"color: #000088;\">$citta<\/span><span style=\"color: #339933;\">=<\/span><span style=\"color: #000088;\">$row<\/span><span style=\"color: #009900;\">[<\/span><span style=\"color: #0000ff;\">\"citta\"<\/span><span style=\"color: #009900;\">]<\/span><span style=\"color: #339933;\">;<\/span>\r\n\t\t<span style=\"color: #b1b100;\">echo<\/span> <span style=\"color: #0000ff;\">\"&lt;tr&gt;\"<\/span><span style=\"color: #339933;\">;<\/span>\r\n\t\t\t<span style=\"color: #b1b100;\">echo<\/span> <span style=\"color: #0000ff;\">\"&lt;td&gt;\"<\/span><span style=\"color: #339933;\">.<\/span><span style=\"color: #000088;\">$id<\/span><span style=\"color: #339933;\">.<\/span><span style=\"color: #0000ff;\">\"&lt;\/td&gt;\"<\/span><span style=\"color: #339933;\">;<\/span>\r\n\t\t\t<span style=\"color: #b1b100;\">echo<\/span> <span style=\"color: #0000ff;\">\"&lt;td&gt;\"<\/span><span style=\"color: #339933;\">.<\/span><span style=\"color: #000088;\">$nome<\/span><span style=\"color: #339933;\">.<\/span><span style=\"color: #0000ff;\">\"&lt;\/td&gt;\"<\/span><span style=\"color: #339933;\">;<\/span>\r\n\t\t\t<span style=\"color: #b1b100;\">echo<\/span> <span style=\"color: #0000ff;\">\"&lt;td&gt;\"<\/span><span style=\"color: #339933;\">.<\/span><span style=\"color: #000088;\">$citta<\/span><span style=\"color: #339933;\">.<\/span><span style=\"color: #0000ff;\">\"&lt;\/td&gt;\"<\/span><span style=\"color: #339933;\">;<\/span>\r\n\t\t<span style=\"color: #b1b100;\">echo<\/span> <span style=\"color: #0000ff;\">\"&lt;\/tr&gt;\"<\/span><span style=\"color: #339933;\">;<\/span>\r\n\t<span style=\"color: #009900;\">}<\/span>\u00a0\r\n\r\n\t<span style=\"color: #b1b100;\">echo<\/span> <span style=\"color: #0000ff;\">\"&lt;\/table&gt;\"<\/span><span style=\"color: #339933;\">;<\/span>\r\n<span style=\"color: #009900;\">}<\/span><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>La funzione <strong><code>mysql_num_rows()<\/code> calcola il numero di record estratti<\/strong> attraverso la query passata (nel nostro caso \u00e8 resa con la variabile <code>$query<\/code>).<br \/>\nL&#8217;if di controllo (<code>$num&gt;0<\/code>) ci permette di evitare la stampa nel caso in cui non siano stati trovati record.<\/p>\n<p>Il punto chiave della stampa \u00e8 il ciclo while. Unito alla funzione <code>mysql_fetch_array()<\/code> ci permette di passare ricorsivamente i vari record estratti, immagazzinando i valori nell&#8217;array <code>$row[]<\/code>.<br \/>\nA questo punto, ci basta richiamare la chiave dell&#8217;array (il nome del campo della tabella) per estrarre il suo valore. Per esempio, <strong><code>$row[\"nome\"]<\/code> contiene i valori del campo &#8220;nome&#8221; di ogni singolo record<\/strong>; nell&#8217;esempio, a ogni ciclo di while conterr\u00e0:<br \/>\nciclo 1: <code>$row[\"nome\"]=\"Mario Rossi\"<\/code>;<br \/>\nciclo 2: <code>$row[\"nome\"]=\"Lara Verdi\"<\/code>;<br \/>\nciclo 3: <code>$row[\"nome\"]=\"Giacomo Bianchi\"<\/code>;<\/p>\n<p>Se la query avesse estratto un solo record, avremmo potuto togliere il while e scrivere semplicemente:<\/p>\n<div class=\"wp_syntax\">\n<table>\n<tbody>\n<tr>\n<td class=\"line_numbers\">\n<pre>1<\/pre>\n<\/td>\n<td class=\"code\">\n<pre class=\"php\" style=\"font-family: monospace;\"><span style=\"color: #000088;\">$row<\/span><span style=\"color: #339933;\">=<\/span><span style=\"color: #990000;\">mysql_fetch_array<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #000088;\">$query<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Il funzionamento sarebbe lo stesso.<\/p>\n<h2>Estrarre record specifici: where, order by, limit<\/h2>\n<p>Nell&#8217;esempio base di prima abbiamo estratto tutti i record indiscriminatamente. Ma se volessi estrarre soltanto il record che ha il valore id=2 nella tabella? Oppure solo i record che contengono la scritta &#8220;Bianchi&#8221; nel campo <code>nome<\/code>?<br \/>\nLa sintassi del <strong>mysql ci permette di selezionare ed estrarre solo i campi con determinati valori<\/strong>. Se per esempio volessi estrarre il record che ha id=2:<\/p>\n<div class=\"wp_syntax\">\n<table>\n<tbody>\n<tr>\n<td class=\"line_numbers\">\n<pre>1<\/pre>\n<\/td>\n<td class=\"code\">\n<pre class=\"php\" style=\"font-family: monospace;\"><span style=\"color: #000088;\">$q<\/span><span style=\"color: #339933;\">=<\/span><span style=\"color: #0000ff;\">\"SELECT * FROM clienti WHERE id=2\"<\/span><span style=\"color: #339933;\">;<\/span><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Per estrarre il record che ha valore &#8216;Milano&#8217; nel campo <code>citta<\/code>:<\/p>\n<div class=\"wp_syntax\">\n<table>\n<tbody>\n<tr>\n<td class=\"line_numbers\">\n<pre>1<\/pre>\n<\/td>\n<td class=\"code\">\n<pre class=\"php\" style=\"font-family: monospace;\"><span style=\"color: #000088;\">$q<\/span><span style=\"color: #339933;\">=<\/span><span style=\"color: #0000ff;\">\"SELECT * FROM clienti WHERE citta='Milano'\"<\/span><span style=\"color: #339933;\">;<\/span><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Notate che il valore, in questo caso, \u00e8 racchiuso da apici singoli: sono indispensabili quando agiamo su un campo che prende come valore una stringa.<\/p>\n<p>Facciamo un passo avanti. Proviamo adesso <strong>a estrarre qualsiasi record che contenga, nel campo <code>nome<\/code>, la stringa &#8216;como&#8217;<\/strong>:<\/p>\n<div class=\"wp_syntax\">\n<table>\n<tbody>\n<tr>\n<td class=\"line_numbers\">\n<pre>1<\/pre>\n<\/td>\n<td class=\"code\">\n<pre class=\"php\" style=\"font-family: monospace;\"><span style=\"color: #000088;\">$q<\/span><span style=\"color: #339933;\">=<\/span><span style=\"color: #0000ff;\">\"SELECT * FROM clienti WHERE nome LIKE '<span style=\"color: #009933; font-weight: bold;\">%c<\/span>omo%'\"<\/span><span style=\"color: #339933;\">;<\/span><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>In questo caso saranno presi tutti i record che, nel campo <code>nome<\/code>, conterranno la parola &#8216;como&#8217; in qualsiasi punto della stringa: non ha importanza cosa ci sia a destra e a sinistra. Nel nostro esempio, sar\u00e0 estratto solo il terzo record (&#8216;giaCOMO bianchi&#8217;).<\/p>\n<p>Nella nostra tabella abbiamo pochi record, ma nei grandi database potremmo avere anche migliaia di valori. Ci sar\u00e0 quindi utile sapere come <strong>ordinarli in base al campo voluto<\/strong> e come estrarre solo un determinato numero di record.<\/p>\n<p>Iniziamo dall&#8217;ordinamento:<\/p>\n<div class=\"wp_syntax\">\n<table>\n<tbody>\n<tr>\n<td class=\"line_numbers\">\n<pre>1<\/pre>\n<\/td>\n<td class=\"code\">\n<pre class=\"php\" style=\"font-family: monospace;\"><span style=\"color: #000088;\">$q<\/span><span style=\"color: #339933;\">=<\/span><span style=\"color: #0000ff;\">\"SELECT * FROM clienti ORDER BY nome\"<\/span><span style=\"color: #339933;\">;<\/span><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>in questo caso saranno estratti tutti i record e presi in ordine alfabetico. Per <strong>estrarli in ordine alfabetico inverso<\/strong>:<\/p>\n<div class=\"wp_syntax\">\n<table>\n<tbody>\n<tr>\n<td class=\"line_numbers\">\n<pre>1<\/pre>\n<\/td>\n<td class=\"code\">\n<pre class=\"php\" style=\"font-family: monospace;\"><span style=\"color: #000088;\">$q<\/span><span style=\"color: #339933;\">=<\/span><span style=\"color: #0000ff;\">\"SELECT * FROM clienti ORDER BY nome DESC\"<\/span><span style=\"color: #339933;\">;<\/span><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Ancora, \u00e8 possibile <strong>estrarre i record in posizioni casuali<\/strong>:<\/p>\n<div class=\"wp_syntax\">\n<table>\n<tbody>\n<tr>\n<td class=\"line_numbers\">\n<pre>1<\/pre>\n<\/td>\n<td class=\"code\">\n<pre class=\"php\" style=\"font-family: monospace;\"><span style=\"color: #000088;\">$q<\/span><span style=\"color: #339933;\">=<\/span><span style=\"color: #0000ff;\">\"SELECT * FROM clienti ORDER BY RAND()\"<\/span><span style=\"color: #339933;\">;<\/span><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Infine, occupiamoci di <strong>estrarre un numero specifico di record<\/strong>:<\/p>\n<div class=\"wp_syntax\">\n<table>\n<tbody>\n<tr>\n<td class=\"line_numbers\">\n<pre>1<\/pre>\n<\/td>\n<td class=\"code\">\n<pre class=\"php\" style=\"font-family: monospace;\"><span style=\"color: #000088;\">$q<\/span><span style=\"color: #339933;\">=<\/span><span style=\"color: #0000ff;\">\"SELECT * FROM clienti LIMIT 0,2\"<\/span><span style=\"color: #339933;\">;<\/span><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Il primo valore del <code>limit<\/code> indica il punto di partenza (a partire dal valore 0), il secondo valore indica quanti record prendere. In questo caso saranno estratti solo i primi due record (nel nostro database, quelli con id=1 e id=2).<br \/>\nLa seguente query, invece, estrae il secondo e il terzo record, ignorando il primo:<\/p>\n<div class=\"wp_syntax\">\n<table>\n<tbody>\n<tr>\n<td class=\"line_numbers\">\n<pre>1<\/pre>\n<\/td>\n<td class=\"code\">\n<pre class=\"php\" style=\"font-family: monospace;\"><span style=\"color: #000088;\">$q<\/span><span style=\"color: #339933;\">=<\/span><span style=\"color: #0000ff;\">\"SELECT * FROM clienti LIMIT 1,2\"<\/span><span style=\"color: #339933;\">;<\/span><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Le opzioni che abbiamo appena visto possono essere combinate tra loro:<\/p>\n<div class=\"wp_syntax\">\n<table>\n<tbody>\n<tr>\n<td class=\"line_numbers\">\n<pre>1<\/pre>\n<\/td>\n<td class=\"code\">\n<pre class=\"php\" style=\"font-family: monospace;\"><span style=\"color: #000088;\">$q<\/span><span style=\"color: #339933;\">=<\/span><span style=\"color: #0000ff;\">\"SELECT * FROM clienti WHERE nome LIKE '<span style=\"color: #009933; font-weight: bold;\">%c<\/span>omo%' ORDER BY RAND() LIMIT 0,2\"<\/span><span style=\"color: #339933;\">;<\/span><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Nel nostro esempio avremo sempre e comunque un solo record, ma in database con centinaia di record ci torner\u00e0 parecchio utile. In pratica, prende i campi che hanno nel campo <code>nome<\/code> la stringa &#8216;como&#8217;, li ordina casualmente ed estrae i primi due.<br \/>\nTenete presente che <strong>i parametri vanno posti esattamente nell&#8217;ordine qui sopra (where, order, limit)<\/strong>: in caso contrario dar\u00e0 un errore alla query.<\/p>\n<p>Nel <a title=\"Tutorial PHP e MYSQL \u2013 Connessione e gestione di un database \u2013 Select, insert, update, delete - One Mind\" href=\"https:\/\/www.manuelmarangoni.it\/sir-bit\/887\/tutorial-php-e-mysql-connessione-e-gestione-di-un-database-select-insert-update-delete-parte-02\/\">prossimo articolo completeremo il tutorial<\/a>, analizzando il sistema per inserire un nuovo record (insert), modificare un record gi\u00e0 presente nel database (update) o eliminarlo (delete).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Una guida di base per la gestione di un database mysql tramite php. Inserimento, modifica, estrazione e cancellazione di record, con le dovute funzioni pi\u00f9 utili.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[78],"tags":[32,4,46],"class_list":["post-874","post","type-post","status-publish","format-standard","hentry","category-php-mysql","tag-mysql","tag-php","tag-tutorial","cat-78-id"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/posts\/874"}],"collection":[{"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/comments?post=874"}],"version-history":[{"count":19,"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/posts\/874\/revisions"}],"predecessor-version":[{"id":2250,"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/posts\/874\/revisions\/2250"}],"wp:attachment":[{"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/media?parent=874"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/categories?post=874"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/tags?post=874"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}