• User

    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......


  • User

    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;

    ?>


  • User Attivo

    Non utilizzare str_replace(), utilizza addslashes().


  • User

    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.


  • User

    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... !!! 🙂


  • User

    Ma utilizzare anche se deprecato @mysql_escape_string() ???