Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2016
    residenza
    Milano
    Messaggi
    2

    Errore mysql - You have an error in your SQL syntax

    ciao a tutti, sono disperata!

    sto realizzando un sito con php su server linux (aruba). Per poter attivare alcune funzionalità occorre registrarsi.

    Bene. Terminata la procedura di registrazione, si fa il login e il sistema rimanda alla pagina di presentazione. Da qui, posso scegliere di andare nella sezione profilo e modificare i miei dati.

    E qui sorge il problema!

    Posto la porzione di codice di questa pagina:

    <?php
    include('mysql.php');
    if(!isset($_SESSION['userid'])) {
    header ("Location: logerror.php");
    } else {

    $errform = 0;
    if(isset($_POST['submit'])) {
    // Controlli su campi form
    if(empty($_POST['nome'])){$errform = 1; $pos1 = " class=\"bgc\"";}else{$_SESSION['nome'] = addslashes($_POST['nome']);}
    if(empty($_POST['cognome'])){$errform = 1; $pos2 = " class=\"bgc\"";}else{$_SESSION['cognome'] = addslashes($_POST['cognome']);}
    if(empty($_POST['edit_email'])){$errform = 1; $pos3 = " class=\"bgc\"";}else{
    $_SESSION['edit_email'] = $_POST['edit_email'];
    if(eregi("^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-]{2,})+.)+([a-zA-Z0-9]{2,})+$",$_POST['edit_email'])==false){
    $errform = 1; $pos3 = " class=\"bgc\"";
    }
    }
    if(empty($_POST['telefono'])){$errform = 1; $pos4 = " class=\"bgc\"";}else{$_SESSION['telefono'] = addslashes($_POST['telefono']);}
    if(empty($_POST['username'])){$errform = 1; $pos5 = " class=\"bgc\"";}else{$_SESSION['username'] = mysql_real_escape_string($_POST['username']);}
    if(empty($_POST['indirizzo'])){$errform = 1; $pos6 = " class=\"bgc\"";}else{$_SESSION['indirizzo'] = addslashes($_POST['indirizzo']);}
    if(empty($_POST['cap'])){$errform = 1; $pos7 = " class=\"bgc\"";}else{$_SESSION['cap'] = addslashes($_POST['cap']);}
    if(empty($_POST['citta'])){$errform = 1; $pos8 = " class=\"bgc\"";}else{$_SESSION['citta'] = addslashes($_POST['citta']);}
    //if(empty($_POST['provincia'])){$errform = 1; $pos9 = " class=\"bgc\"";}else{$_SESSION['provincia'] = ($_POST['provincia']);}
    if(empty($_POST['piva'])){$errform = 1; $pos10 = " class=\"bgc\"";}else{$_SESSION['piva'] = addslashes($_POST['piva']);}
    if(empty($_POST['cf'])){$errform = 1; $pos11 = " class=\"bgc\"";}else{$_SESSION['cf'] = addslashes($_POST['cf']);}

    if($errform==0){
    // aggiorno utente
    $ris = mysql_query("UPDATE utenti SET nome='".$_SESSION['nome']."', cognome='".$_SESSION['cognome']."', telefono='".$_SESSION['telefono']."', indirizzo='".$_SESSION['indirizzo']."',
    cap='".$_SESSION['cap']."', citta='".$_SESSION['citta']."', provincia='".$_SESSION['provincia']."', piva='".$_SESSION['piva']."', cf='".$_SESSION['cf']."', email='".$_SESSION['edit_email']."', username='".$_SESSION['username']."'
    WHERE id_utente = $_POST[id_utente]") or die (mysql_error());
    $okform = 1;
    }
    }
    ?>
    <?php
    if($okform==1){
    $messaggio = "Il tuo profilo è stato aggiornato.";
    }else{
    $ris_bis = mysql_query("SELECT * FROM utenti WHERE id_utente = $_SESSION[userid]");
    $rs = mysql_fetch_array($ris_bis);
    }

    if($errform==1) {
    $messaggio = "È necessario compilare tutti i campi.";
    }
    }
    ?>

    Cosa succede: se giungo per la prima volta, faccio le modifiche del profilo -> invio il form e l'UPDATE di mysql funziona.

    Ma se subito dopo, quando ancora presente il messaggio "Il tuo profilo è stato aggiornato.", cerco di fare una nuova modifica...

    ecco che compare il messaggio:
    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 '' at line 3

    Esiste qualche anima gentile che potrebbe aiutarmi a capire cosa diavolo succede?
    grazie

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Dopo aver fatto il primo aggiornamento, cambia il codice php in modo che invece di eseguire la query di update, te la stampi a video, sicuramente una delle variabili risulterà non valorizzata.

    P.S. qualche consiglio:
    - per gli indici degli array usa sempre gli apici, quindi per esempio $_POST['id_utente'] e non $_POST[id_utente]
    - quando posti del codice sul forum, mettilo tra i tag [php] in modo che vengano evidenziate le parole chiave, stringhe ecc
    - prima di inviare il messaggio, visualizzane l'anteprima ed assicurati che il codice sia ben indentato, così è più facile leggerlo

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2016
    residenza
    Milano
    Messaggi
    2

    Errore mysql - You have an error in your SQL syntax

    Sei un angelo Alhazred,
    non so come ringraziarti. In effetti avevo due variabili non valorizzate.

    grazie anche per i suggerimenti per come si sta sul forum.


    Quote Originariamente inviata da trimalcione70 Visualizza il messaggio
    ciao a tutti, sono disperata!

    sto realizzando un sito con php su server linux (aruba). Per poter attivare alcune funzionalità occorre registrarsi.

    Bene. Terminata la procedura di registrazione, si fa il login e il sistema rimanda alla pagina di presentazione. Da qui, posso scegliere di andare nella sezione profilo e modificare i miei dati.

    E qui sorge il problema!

    Posto la porzione di codice di questa pagina:

    <?php
    include('mysql.php');
    if(!isset($_SESSION['userid'])) {
    header ("Location: logerror.php");
    } else {

    $errform = 0;
    if(isset($_POST['submit'])) {
    // Controlli su campi form
    if(empty($_POST['nome'])){$errform = 1; $pos1 = " class=\"bgc\"";}else{$_SESSION['nome'] = addslashes($_POST['nome']);}
    if(empty($_POST['cognome'])){$errform = 1; $pos2 = " class=\"bgc\"";}else{$_SESSION['cognome'] = addslashes($_POST['cognome']);}
    if(empty($_POST['edit_email'])){$errform = 1; $pos3 = " class=\"bgc\"";}else{
    $_SESSION['edit_email'] = $_POST['edit_email'];
    if(eregi("^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-]{2,})+.)+([a-zA-Z0-9]{2,})+$",$_POST['edit_email'])==false){
    $errform = 1; $pos3 = " class=\"bgc\"";
    }
    }
    if(empty($_POST['telefono'])){$errform = 1; $pos4 = " class=\"bgc\"";}else{$_SESSION['telefono'] = addslashes($_POST['telefono']);}
    if(empty($_POST['username'])){$errform = 1; $pos5 = " class=\"bgc\"";}else{$_SESSION['username'] = mysql_real_escape_string($_POST['username']);}
    if(empty($_POST['indirizzo'])){$errform = 1; $pos6 = " class=\"bgc\"";}else{$_SESSION['indirizzo'] = addslashes($_POST['indirizzo']);}
    if(empty($_POST['cap'])){$errform = 1; $pos7 = " class=\"bgc\"";}else{$_SESSION['cap'] = addslashes($_POST['cap']);}
    if(empty($_POST['citta'])){$errform = 1; $pos8 = " class=\"bgc\"";}else{$_SESSION['citta'] = addslashes($_POST['citta']);}
    //if(empty($_POST['provincia'])){$errform = 1; $pos9 = " class=\"bgc\"";}else{$_SESSION['provincia'] = ($_POST['provincia']);}
    if(empty($_POST['piva'])){$errform = 1; $pos10 = " class=\"bgc\"";}else{$_SESSION['piva'] = addslashes($_POST['piva']);}
    if(empty($_POST['cf'])){$errform = 1; $pos11 = " class=\"bgc\"";}else{$_SESSION['cf'] = addslashes($_POST['cf']);}

    if($errform==0){
    // aggiorno utente
    $ris = mysql_query("UPDATE utenti SET nome='".$_SESSION['nome']."', cognome='".$_SESSION['cognome']."', telefono='".$_SESSION['telefono']."', indirizzo='".$_SESSION['indirizzo']."',
    cap='".$_SESSION['cap']."', citta='".$_SESSION['citta']."', provincia='".$_SESSION['provincia']."', piva='".$_SESSION['piva']."', cf='".$_SESSION['cf']."', email='".$_SESSION['edit_email']."', username='".$_SESSION['username']."'
    WHERE id_utente = $_POST[id_utente]") or die (mysql_error());
    $okform = 1;
    }
    }
    ?>
    <?php
    if($okform==1){
    $messaggio = "Il tuo profilo è stato aggiornato.";
    }else{
    $ris_bis = mysql_query("SELECT * FROM utenti WHERE id_utente = $_SESSION[userid]");
    $rs = mysql_fetch_array($ris_bis);
    }

    if($errform==1) {
    $messaggio = "È necessario compilare tutti i campi.";
    }
    }
    ?>

    Cosa succede: se giungo per la prima volta, faccio le modifiche del profilo -> invio il form e l'UPDATE di mysql funziona.

    Ma se subito dopo, quando ancora presente il messaggio "Il tuo profilo è stato aggiornato.", cerco di fare una nuova modifica...

    ecco che compare il messaggio:
    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 '' at line 3

    Esiste qualche anima gentile che potrebbe aiutarmi a capire cosa diavolo succede?
    grazie

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.