Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Errore MySql

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    46

    Errore MySql

    Raga una domanda...
    xche' se inserisco un nome con " ' " l'apice in questione il MySql mi restituisce questo?
    codice:
    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 'prova@a.it', 'CIMA', '55b21d9df35683679f8e28ab78f6deb7', '1s4ajsh1', now())' at line 2
    Questo lo uso per inserire i dati nel mio db
    Codice PHP:
    $sql mysql_query("INSERT INTO NomeSito_Login (nome, cognome, email, username, password, password_decriptata, data_registrazione)
        VALUES('
    $nome', '$cognome', '$email', '$username', '$password_db', '$password_casuale', now())") or die (mysql_error()); 
    Se nn uso l'apice va tutto ok ma per la miseria xche' nn mi inserisce questo dannato apice =(

  2. #2
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    usa addslashes() per pulire l'inserimento... o qualche funzione simile...

  3. #3
    Perché se ci fai caso, nella sintassi SQL l'apice (') indica la chiusura di una stringa.

    Per cui, nella query da te riportata, se vai ad inserire una stringa con un apice all'interno, viene interpretata come se la stringa SQL fosse interrotta da quell'apice mancando ti tutta la parte successiva.

    Scrivi il tuo codice come segue e vedrai cosa intendo:

    Codice PHP:
    $sql "
    INSERT INTO NomeSito_Login 
    (nome, cognome, email, username, password, password_decriptata, data_registrazione) 
    VALUES('
    $nome', '$cognome', '$email', '$username', '$password_db', '$password_casuale', now())
    "
    ;

    echo 
    $sql; exit; 
    in questo modo, vedrai dove si blocca la query e capirai qual'è la stringa che ti procura il disguido.

    Ad ogni modo, a prescindere dal doveroso controllo di tutti gli input prima di passarli alla query (non mi sembra tu ne faccia da come parli), più che addslashes(), ti consiglio di usare la funzione mysql_real_escape_string(), e sostituisci tutti i caratteri potenzialmente dannosi con un bel ciclo di str_replace().

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    46
    Fatto tnx =)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.