Errore nella query UPDATE

Salve, non capisco come mai quando invio l'update dei dati mi da questo errore :

rore nella query UPDATE clienti SET nome = 'ccc', descrizione1 = 'cc', descrizione2 = 'ccc', telefono = 'ccc', email = 'ccc', citta = 1, categotia = 5, data = '', WHERE id = 108: 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 'WHERE id = 108' at line 10

penso sia un problema di id ma non riesco a venirne a capo... qualcuno puo aiutarmi????

Grazie Carlo.

<?php

// richiamo il file di configurazione

require 'config.php';

// richiamo lo script responsabile della connessione a MySQL

require 'connect.php';

if($_POST && isset($_GET['id']))

{

   aggiorna_record();

}

elseif(isset($_GET['id']))

{

   mostra_record();

}

else

   mostra_lista();

function mostra_lista()

{

   // mostro un eventuale messaggio

   if(isset($_GET['msg']))

      echo '<b>'.htmlentities($_GET['msg']).'</b><br /><br />';

   // preparo la query

   $query = "SELECT id,nome,descrizione1,descrizione2,telefono,email,citta,categoria,data FROM clienti";

   // invio la query

   $result = mysql_query($query);

   // controllo l'esito

   if (!$result) {

      die("Errore nella query $query: " . mysql_error());

   }

   $categoria_arr = array('');

    $citta_arr = array('');

   echo '

   <table border="0" align="center" span class="Stile10" cellspacing="3" cellpadding="5" bgcolor="#FFFFFF">

<tr bgcolor="#F0F0F0">

      <th>Id</th>

      <th>Nome</th>

      <th>Desc. Ant.</th>

      <th>Descrizione</th>

      <th>Telefono</th>

      <th>Email</th>

      <th>Citta</th>

      <th>Categoria</th>

      <th>Data</th>

      <th>Opz</th>

   </tr>';

   while ($row = mysql_fetch_assoc($result))

   {

   $id           = htmlentities($row['id']);

   $nome         = htmlspecialchars($row['nome']);

   $descrizione1 = htmlspecialchars($row['descrizione1']);

   $descrizione2 = htmlspecialchars($row['descrizione2']);

   $telefono     = htmlspecialchars($row['telefono']);

   $email        = htmlspecialchars($row['email']);

   $data         = htmlspecialchars($row['data']);

   //if(!$descrizione1) $descrizione1 = ' ';

   //if(!$descrizione2) $descrizione2 = ' ';

   $categoria = $categoria_arr[$row['categoria']];

   $citta = $citta_arr[$row['citta']];

      // preparo il link per la modifica dei dati del record

      $link = $_SERVER['PHP_SELF'] . '?id=' . $row['id'];

      echo "

      <tr>

           <td>$id</td>

         <td>$nome</td>

         <td>$descrizione1</td>

         <td>$descrizione2</td>

         <td>$telefono</td>

         <td>$email</td>

         <td>$citta</td>

         <td>$categoria</td>

         <td>$data</td>

         <td><a href=\"$link\">modifica</a></td>

      </tr>";

   }

   echo '</table>';

   // libero la memoria di PHP occupata dai record estratti con la SELECT

   mysql_free_result($result);

   // chiudo la connessione a MySQL

   mysql_close();

}

function aggiorna_record()

{

   // recupero i campi di tipo "stringa"

   $nome             = trim($_POST['nome']);

   $descrizione1     = trim($_POST['descrizione1']);

   $descrizione2     = trim($_POST['descrizione2']);

   $telefono         = trim($_POST['telefono']);

   $email            = trim($_POST['email']);

   // verifico se devo eliminare gli slash inseriti automaticamente da PHP

   if(get_magic_quotes_gpc())

   {

   $nome             = stripslashes($nome);

   $descrizione1     = stripslashes($descrizione1);

   $descrizione2     = stripslashes($descrizione2);

   $telefono         = stripslashes($telefono);

   $email            = stripslashes($email);

   }

   // effettuo l'escape dei caratteri speciali per inserirli all'interno della query

   $nome             = mysql_real_escape_string($nome);

   $descrizione1     = mysql_real_escape_string($descrizione1);

   $descrizione2     = mysql_real_escape_string($descrizione2);

   $telefono         = mysql_real_escape_string($telefono);

   $email            = mysql_real_escape_string($email);

   // recupero gli altri campi del form

   $categoria   = intval($_POST['categoria']);

   $citta       = intval($_POST['citta']);

   $id = intval($_GET['id']);

   // verifico la presenza dei campi obbligatori

   if(!$nome)

   {

      echo "

      header(<script>alert('Devi inserire il nome')</script>)

      <script>window.location = ('modifica.php')</script>";

      exit;

   }

   // preparo la query

   $query = "UPDATE clienti SET

            nome = '$nome',

            descrizione1 = '$descrizione1',

            descrizione2 = '$descrizione2',

            telefono = '$telefono',

            email = '$email',

            citta = $citta,

            categotia = $categoria,

            data = '$data',

            WHERE id = $id";

   // invio la query

   $result = mysql_query($query);

   // controllo l'esito

   if (!$result) {

      die("Errore nella query $query: " . mysql_error());

   }

   // chiudo la connessione a MySQL

   mysql_close();

   echo "

      header(<script>alert('Cliente \"$nome\" modoficato con successo.')</script>)

      <script>window.location = ('amministra.php')</script>";

}

function mostra_record()

{

   // mostro un eventuale messaggio

   if(isset($_GET['msg']))

      echo '<b>'.htmlentities($_GET['msg']).'</b><br /><br />';

   $id = intval($_GET['id']);

   // preparo la query

   $query = "SELECT nome,descrizione1,descrizione2,telefono,email,citta,categoria,data FROM clienti WHERE id = $id";

   // invio la query

   $result = mysql_query($query);

   // controllo l'esito

   if (!$result) {

      die("Errore nella query $query: " . mysql_error());

   }

   // controllo che la SELECT abbia restituito un record

   // l'id passato via GET potrebbe essere stato manipolato

   if(mysql_num_rows($result) != 1) {

      die("l'ID passato via GET è errato");

   }

   list($nome,$descrizione1,$descrizione2,$telefono,$email,$citta,$categoria,$data) = mysql_fetch_row($result);

   $nome             = htmlspecialchars($nome);

   $descrizione1     = htmlspecialchars($descrizione1);

   $descrizione2     = htmlspecialchars($descrizione2);

   $telefono         = htmlspecialchars($telefono);

   $email            = htmlspecialchars($email);

   //$citta            = htmlspecialchars($citta);

   //$categoria        = htmlspecialchars($categoria);

   $data             = htmlspecialchars($data);

   ?>

     <table  width="360" height="350"  border="0" align="center" cellpadding="4" cellspacing="0">

          <!--DWLayoutTable-->

          <tr>

            <th width="78" height="29">&nbsp;</th>

            <th width="257">&nbsp;</th>

            <th width="1">&nbsp;</th>

          </tr>

          <tr>

            <th height="32" colspan="2" align="left" valign="middle"><div align="center" class="Stile11">Inserisci il nuovo Utente </div></th>

            <th>&nbsp;</th>

          </tr>

          <tr>

            <th height="32" align="left" valign="middle">Nome</th>

            <th align="left" valign="middle"><input type="text" name="nome" size="25"value="<?echo $nome?>" />&nbsp;</th>

            <th>&nbsp;</th>

          </tr>

          <tr>

            <th height="32" align="left" valign="middle">Telefono</th>

            <th align="left" valign="middle"><input type="text" name="telefono" size="25"value="<?echo $telefono?>" />&nbsp;</th>

            <th>&nbsp;</th>

          </tr>

          <tr>

            <th height="32" align="left" valign="middle">E-mail</th>

            <th align="left" valign="middle"><input type="text" name="email" size="25"value="<?echo $email?>" />&nbsp;</th>

            <th>&nbsp;</th>

          </tr>

          <tr>

            <th height="32" align="left" valign="middle">Citt&agrave;</th>

            <th align="left" valign="middle">

        <select name="citta">

         <option value="0">:: seleziona ::</option>

         <option value="1" <?if($citta==1) echo 'selected="selected"'?>>Torino</option>

        <option value="2" <?if($citta==2) echo 'selected="selected"'?>>Alessandria</option>

        <option value="3" <?if($citta==3) echo 'selected="selected"'?>>Asti</option>

        <option value="4" <?if($citta==4) echo 'selected="selected"'?>>Vercelli</option>

        <option value="5" <?if($citta==5) echo 'selected="selected"'?>>Novara</option>

         </select>

        &nbsp;</th>

            <th>&nbsp;</th>

          </tr>

          <tr>

            <th height="32" align="left" valign="middle">Desc. Ant. </th>

            <th align="left" valign="middle"><input type="text" name="descrizione1" size="35"value="<?echo $descrizione1?>" />&nbsp;</th>

            <th>&nbsp;</th>

          </tr>

          <tr>

            <th height="80" align="left" valign="middle">Descrizione</th>

            <th align="left" valign="top"><textarea name="descrizione2" cols="35" rows="4"><?echo $descrizione2?></textarea></th>

            <th>&nbsp;</th>

          </tr>

          <tr>

            <th height="32" align="left" valign="middle">Categoria</th>

            <th align="left" valign="middle">

        <select name="categoria">

         <option value="0">:: seleziona ::</option>

        <option value="1" <?if($categoria==1) echo 'selected="selected"'?>>mmm</option>

        <option value="2" <?if($categoria==2) echo 'selected="selected"'?>>mmm</option>

        <option value="3" <?if($categoria==3) echo 'selected="selected"'?>>mmm</option>

        <option value="4" <?if($categoria==4) echo 'selected="selected"'?>>mmm</option>

        <option value="5" <?if($categoria==5) echo 'selected="selected"'?>>mmm</option>

         </select>

      &nbsp;</th>

            <th>&nbsp;</th>

          </tr>

          <tr>

            <th height="32" align="left" valign="middle">Foto</th>

            <th valign="top"><!--DWLayoutEmptyCell-->&nbsp;</th>

            <th>&nbsp;</th>

          </tr>

          <tr>

            <th height="63">&nbsp;</th>

            <th>&nbsp;</th>

            <th>&nbsp;</th>

          </tr>

          <tr>

            <th height="32" colspan="3" align="center" valign="middle">

          <input name="invia" type="submit" value="Invia" />

         &nbsp;</th>

          </tr>

        </table>

    </td>

    <td></td>

  </tr>

  <tr>

    <td height="68">

     <div align="center">

        <a href="griglia1.php">Griglia</a> <a href="edita1.php">Edita </a></div></td>

    <td></td>

  </tr>

  <tr>

</td>

  </tr>

</table>

</form>

   <?

}

?>

inviato 9 anni fa
cereal
X 0 X

C'è una virgola in più nella query, prima del WHERE. Devi correggere così:

$query = "UPDATE clienti SET
            nome = '$nome',
            descrizione1 = '$descrizione1',
            descrizione2 = '$descrizione2',
            telefono = '$telefono',
            email = '$email',
            citta = $citta,
            categotia = $categoria,
            data = '$data'
            WHERE id = $id";
risposto 9 anni fa
Gianni Tomasicchio
X 0 X

ho levato la virgola dopo '$data' ma continua a dare errori....

Errore nella query UPDATE clienti SET nome = 'werfwef', descrizione1 = 'qwerqereq', descrizione2 = 'qwerqwerwerw werwe qwer qwe rqwer qwerqwereqw rqwr qwe rq wer qwrqwr qwre qr qw eqw qwe qeqwer qrqweqrwe wq qwe 1971', telefono = '34234234', email = 'qwerqwerqwer44', citta = 1, categotia = 1, data = '' WHERE id = 109: Unknown column 'categotia' in 'field list'

risposto 9 anni fa
cereal
X 0 X

Si, c'è un errore di ortografia. Hai scritto 'categotia' ma forse volevi scrivere 'categoria'

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

l'ho visto..... ma non riesco a trovarlo... foca la bindella!!!!! ;) cmq grazie mille :)

risposto 9 anni fa
cereal
X 0 X

Come non riesci a trovarlo, è al terzultimo rigo della query:

$query = "UPDATE clienti SET

            nome = '$nome',

            descrizione1 = '$descrizione1',

            descrizione2 = '$descrizione2',

            telefono = '$telefono',

            email = '$email',

            citta = $citta,

            categotia = $categoria,          <===

            data = '$data'

            WHERE id = $id";

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

visto... :) sono ore davanti il pc è sono rinco.....

Grazie..........

risposto 9 anni fa
cereal
X 0 X

io ho provAto lo stesso script,pero' se si clicca su modifica,il link non punta a niente..

cioe'non richiamo la funzione mostra_record().

All'inizio ho messo:

if($_POST && isset($_GET['idnuove']))
{
   aggiorna_record();
}
elseif(isset($_GET['idnuove']))
{
   mostra_record();
}..

ed ho dichiarato la funzione mostra_record():

   
function mostra_record()
{
   $id = intval($_GET['idnuove']);

   // preparo la query
   $query = "SELECT * FROM nuove WHERE idnuove = $id";

   // invio la query
   $result = mysql_query($query);

   // controllo che la SELECT abbia restituito un record
   // l'id passato via GET potrebbe essere stato manipolato
   if(mysql_num_rows($result) != 1) {
      die("l'ID passato via GET e' errato");
   }

   list($nome,$testo,$lin,$nlin,$imm) = mysql_fetch_row($result);

   $nome      = htmlspecialchars($nome);
   $testo     = htmlspecialchars($testo);
   $lin         = htmlspecialchars($lin);
                $nlin     = htmlspecialchars($nlin);
                $imm   = htmlspecialchars($imm);
   ?>

col relativo form che richiamera' al suo interno i dati da modificare.PEro' come detto prima lo script sembra ignorare l'evento (isset($_GET['idnuove']))..oppure non punta alla funzione.Puo'essere perche' sono su hosting windows?..

risposto 9 anni fa
brodolio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda