- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- Problema con apice "'" in query mysql php
-
Problema con apice "'" in query mysql php
Salve,
Ho un problema con una query mysql, spiego :
Da un form inserimento dati invio alla query, la query salva i dati correttamente nel db, il problema avviene quando un campo, ad esempio provincia è uguale a "l'aquila" essendo un apice la query mi da errore.....
Ho inserito, prima della query la seguente stringa :
$user_provincia = str_replace("'", "'", $_POST['user_provincia']); ma continua a darmi errore :
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AQUILA'
Qualcuno può aiutarmi??? premetto che di php e mysql non sono molto scafato......
-
ops....
inserisco anche il codice così si capisce meglio dove sbaglio
<?php
header('Content-type: text/html;charset=utf-8');
$user_tipo= str_replace("'", "'", $_POST['user_tipo']);
$user_email= str_replace("'", "'", $_POST['user_email']);
$user_nicename = str_replace("'", "'", $_POST['user_nicename']);
$user_citta= str_replace("'", "'", $_POST['user_citta']);
$user_provincia = str_replace("'", "'", $_POST['user_provincia']);
$user_annuncio= str_replace("'", "'", $_POST['user_annuncio']);// richiamo il file di configurazione require 'config.php'; // richiamo lo script responsabile della connessione a MySQL require 'connect.php';
// preparo la query
$query = "INSERT INTO utenti (id, user_tipo, user_email, user_nicename, user_password, user_nominativo, user_citta, user_provincia, user_annuncio)VALUES ('','$_POST[user_tipo]','$_POST[user_email]','$_POST[user_nicename]','$_POST[user_password]','$_POST[user_nominativo]','$_POST[user_citta]','$_POST[user_provincia]','$_POST[user_annuncio]')";
// lancio la query
$result = mysql_query($query);// controllo l'esito
if (!$result) {
die("Errore nella query $query: " . mysql_error());
}mysql_select_db($DB_name);
$query_pippo = "select id from $tbl_name WHERE user_nicename='$user_nicename'";
$pippo = mysql_query($query_pippo) or die(mysql_error());
$row_pippo = mysql_fetch_assoc($pippo);
$totalRows_pippo = mysql_num_rows($pippo);// Creao la cartella per l'upload immagini con il nome dell'ultimo id creato
mkdir("../upload/server/php/files/".$row_pippo['id'], 0777);mysql_close();
header('Location: ../upload/upload.php');
exit;?>
-
Non utilizzare str_replace(), utilizza addslashes().
-
Il problema è che nella clausola values continui ad utilizzare attributi della variabile Post ma che non hanno subìto la sostituzione e quindi ti genera l'errore.
-
Grazie mille!!!
Due gg a sbattere la testa contro il muro!!! sono un pivello...
ciao Iceman84, è vero, ero così concetranto sul fatto che non passasse il codice str_replace da non vedere che ripostavo il tutto sotto values!!! ( colpa di un semplice copia e incolla di una vecchia query per fare prima!! )
cmq adesso tutto è ok.Grazie Francesco, utilizzerò addslashes() anzichè str_replace(), e per stampare la variabile in modo corretto utilizzerò stripslashes()
Grazie mille... !!!
-
Ma utilizzare anche se deprecato @mysql_escape_string() ???