La funzione addslashes

La funzione Addslashes() del linguaggio Php è particolarmente utile quando si lavora con i database. Consente di eliminare gli errori delle query SQL in presenza degli apici nelle variabili.

Un esempio pratico

Nel seguente script tento in inserire nel campo 'commento' della tabella 'forum' il contenuto della variabile $stringa.

<?php
// connessione al database
$server = "localhost";
$user = "utente";
$password = "password";
$database = "nomedatabase";
$conn = @mysql_connect($server,$user,$password);
if ($conn)
{
$stringa = "In questo testo puoi notare la presenza dell'apice";
$query = "INSERT INTO forum (commento) VALUES ('$stringa')";
$result = mysql_db_query($database,$query,$conn);
}
?>

Tuttavia, lo script va in errore. In effetti c'è un problema da risolvere.

Perché lo script non funziona?

Nella stringa di testo è presente il carattere apice ( ' ) , si trova dopo dell e prima della parola apice stessa, e interferisce con gli apici VALUES('$stringa') del linguaggio SQL.

In altri termini l'interprete SQL si trova di fronte alla seguente situazione:

VALUES('In questo testo puoi notare la presenza dell'apice')

Il carattere usato come apostrofo nel testo è un apice. L'interprete Php trova tre apici, quello di apertura, l'apostrofo e quello di chiusura.

La sintassi SQL viene violata, gli apici devono essere due ( apertura e chiusura ), e la query va in errore senza portare a termine il proprio lavoro.

Nota. Questo problema è molto grave perché comporta una perdita di dati. Ad esempio, un utente non riesce a scrivere un messaggio nel forum oppure la compilazione del modulo di acquisto o di iscrizione alla newsletter non viene registrata nel database.

La soluzione con Addslashes()

Per risolvere questo problema è di grande aiuto ricorrere alla funzione addslashes(). Questa funzione del linguaggio Php aggiunge automaticamente uno slash in presenza del carattere apice.

$stringa = "In questo testo puoi notare la presenza dell'apice";
$stringa = addslashes($stringa);
$query = "INSERT INTO forum (commento) VALUES ('$stringa')";


Il contenuto della variabile $stringa viene trasformato in "In questo testo puoi notare la presenza dell'apice".

Lo slash prima dell'apostrofo (') indica all'interprete SQL che il carattere successivo deve essere considerato come parte del testo e non come delimitatore finale di campo.

La query non va in errore e il commento viene registrato nel database.

Come eliminare lo slash dalla stringa di testo

L'operazione inversa viene svolta dalla funzione stripslashes() che rimuove tutte le backslash e permette di ritornare alla stringa originale.



Per scrivere un commento

knowledge base

Il linguaggio Php

FAQ