Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/w41258/domains/chiappucci.it/public_html/ServerScript/ban-ip/class.BanIp.php on line 15
MySql | Guido Chiappucci's Blog

Guido Chiappucci's Blog

Archive for the ‘MySql’ Category

MySql: select order by id in()

without comments

MySQLQuando si recuperano dei record con una query del tipo SELECT * FROM `tbl` WHERE `ID` IN(34,785,345,43) può essere necessario ordinare il risultato della query seguendo l’ordine in cui vengono passati i valori all’istruzione IN(), per fare questo basta usare la seguente istruzione order: ORDER BY FIELD(`ID`, 34, 785, 345, 43), quindi, SELECT * FROM `tbl` WHERE `ID` IN(34,785,345,43) ORDER BY FIELD(`ID`, 34, 785, 345, 43)

Written by Guido

luglio 30th, 2011 at 11:41 pm

Posted in MySql,Tips and tricks

Tagged with

Installare PhpMyAdmin su Ubuntu

with 2 comments

Se vogliamo utilizzare PhpMyAdmin sul nostro Ubuntu bastano pochi semplici passaggi.

Prima di tutto dobbiamo installare il pacchetto, quindi eseguiamo il comando sudo apt-get install phpmyadmin e rispondiamo alle semplici domande che ci vengono rivolte durante l’installazione.

Al termine dell’installazione dobbiamo dire al nostro Apache dove si trova il file di configurazione di PhpMyAdmin che ci permetterà di eseguirlo dal browser, quindi apriamo il file apache2.conf con il nostro editor preferito, ad esempio con sudo nano /etc/apache2/apache2.conf, ed aggiungiamo alla fine del file la seguente riga: Include /etc/phpmyadmin/apache.conf . Ora non ci resta che salvare il file e riavviare il server web con sudo /etc/init.d/apache2 restart.

A questo punto possiamo accedere al programma dall’indirizzo: http://localhost/phpmyadmin

Written by Guido

marzo 17th, 2011 at 11:05 pm

Posted in Linux,MySql,Tips and tricks

Tagged with ,

MySql: modificare il my.cnf senza riavviare il database

without comments

MySQL

Lavorando con MySql può capitare di doverne modificare la configurazione “al volo” ma questa operazione, se fatta direttamente dal file di configurazione my.cnf, comporta il riavvio del servizio e un conseguente down dell’appplicazione.

Per evitare il down è possibile modificare le variabili di MySql direttamente con una query di update sulle medesime, ad esempio se vogliamo modificare la direttiva wait timeout bisogna eseguire la seguente query:

set global wait_timeout = 30

Dopo avere eseguito la query MySql avvertirà la modifica senza essere riavviato, lo stato si puù verificare eseguendo la query SHOW VARIABLES

È bene ricordarsi di apportare la modifica anche nel file my.cnf così ai prossimi riavvii del database le modifiche verranno mantenute.

Written by Guido

ottobre 12th, 2010 at 10:10 am

Posted in Linux,MySql

Tagged with

MySql: i più e i meno degli indici Full Text

without comments

Come ogni cosa nell’ambito dei database e comunque nella programmazione in generale le cose che da una parte offrono grandi prestazioni dall’altra presentano dei limiti che se non vengono considerati possono causare spiacevoli sorprese e anche di questo avviso sono gli indici Full Text di MySql.

Ho avuto modo di affrontare l’argomento pochi mesi fa e ne ho parlato nel post precedente sbandierandone i privilegi ma oggi voglio elencare le pagine di riferimento ufficiali di mysql.com dove sono descritti anche i limiti di questa tipologia di indici e degli accorgimenti per ottimizzare le prestazioni.

Le pagine di riferimento ufficiali si trovano qui: http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html, ed in particolare i consigli per il tuning sono in questa pagina: http://dev.mysql.com/doc/refman/5.1/en/fulltext-fine-tuning.html

Buona lettura.

Written by Guido

ottobre 19th, 2009 at 11:06 pm

Posted in MySql

Tagged with

MySql: Velocizzare le ricerche con indici Full Text

without comments

I database crescono, le richieste aumentano, e le query che fino a poco tempo fa sembravano veloci diventano improvvisamente lentissime… Prima o poi tutti si riconoscono in questa situazione… e se non si corre ai ripari si rischia seriamente di compromettere un intero sistema.

Per quanto mi riguarda ci sono passato parecchie volte in una situazione analoga ma l’ultima volta la questione era un po’ più complicata delle precedenti e analizzando (.?..x~@~#..!.) l’sql ho localizzato i colli di bottiglia della query incriminata e alla fine ho deciso di creare un indice di tipo Full Text per velocizzare il recupero dei dati.
Ragazzi, non avevo mai utilizzato indici Full Text ma sono rimasto impressionato dalla velocità, un query che normalmente impiega dai 3 ai 7 secondi adesso viene eseguita in pochi centesimi di secondo!

Per chi non sapesse cos’è e come si usa un indice Full Text ecco un po’ di appunti:

L’ indice Full Text è un indice speciale in grado di recuperare la posizione di ogni distinto vocabolo in un campo.
In un indice Full Text possono essere indicizzati uno o più campi testuali (varchar, text, ecc…).

Sintassi di creazione dell’indice:

1
ALTER TABLE NomeTabella ADD FULLTEXT (nome_campo);

Sintassi di creazione dell’indice con più campi:

1
ALTER TABLE NomeTabella ADD FULLTEXT (nome_campo,nome_campo2);

Sintassi di utilizzo:

1
SELECT * FROM NomeTabella WHERE MATCH (nome_campo)  AGAINST ('parola_da_cercare');

Sintassi di utilizzo con più campi nell’indice:

1
SELECT * FROM NomeTabella WHERE MATCH (nome_campo,nome_campo2)  AGAINST ('parola_da_cercare');

Written by Guido

settembre 28th, 2009 at 8:51 am

Posted in MySql

Tagged with

PHP: Salvare un array in un database

without comments

Quotidianamente durante la scrittura dei progetti faccio un grande uso di array e molte volte ho pensato che sarebbe utilie per vari scopi salvare il contenuto di un array in un database.
Con php questa operazione è molto semplice, basta utilizzare la funzione serialize().

Serialize “traduce” in stringa il contenuto dell’array così da poterlo salvare in un campo di una tabella, successivamente, per il recupero dei dati e la “ritrasformazione” in array, bisogna utilizzare la funzione unserialize().

In pratica l’ipotetico array $var_array=array(‘pippo’,'pluto’,'paperino’) verrebbe codificato in questa maniera:

a:3:{i:0;s:5:"pippo";i:1;s:5:"pluto";i:2;s:8:"paperino";}

Di seguito è mostrato del codice di esempio:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
/* 
* Trasformo l'array in stringa 
* Per evitare errori di sql codifico la stringa in base64
*/
$var_array = array('pippo','pluto','paperino');
$array_to_save = base64_encode( serialize($var_array) );
 
/* Salvataggio nel database */
$sql = "INSERT INTO TABELLA (CAMPO) VALUES ('".$array_to_save."')";
mysql_result($sql,$dblink);
 
/* Recupero dell'array dal database */
$sql = "SELECT CAMPO FROM TABELLA WHERE ID = ".$id;
$result = mysql_result($sql,$dblink);
$row = mysql_fetch_assoc($result);
$var_array = unserialize( base64_decode($row[CAMPO]) );
 
?>

Written by Guido

febbraio 11th, 2009 at 4:59 pm

Posted in MySql,PHP

Tagged with , , , ,