Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [SQL] Dov'è l'errore in questa riga?

    I campi letti da un form (che a sua volta pesca i valori dai campi del database) vengono passati ad una nuova pagina, formattati, e concatenati dentro a un ciclo for per poi essere reinseriti nello stesso database.
    Questa la parte del codice interessata (la riga principale è quella con il WHERE):

    codice:
    for ($i=0;$i<12;$i++)
    {
    $_POST['testo'.$i]=str_replace("\\\"","\"",$_POST['testo'.$i]);
    $_POST['testo'.$i]= str_replace("\\\\","\\",$_POST['testo'.$i]);
    $_POST['testo'.$i]= str_replace("\\'","'",$_POST['testo'.$i]);
    $_POST['testo'.$i]=nl2br($_POST['testo'.$i]);
    
    $query = "UPDATE Tabella SET titolo='{$_POST['titolo'.$i]}', testo='{$_POST['testo'.$i]}', data='{$_POST['datanews'.$i]}', sito='codiceuno' WHERE data='{$_POST['datanews'.$i]}'";
    $result = mysql_query($query) or die("Non è stato possibile aggiornare il database.");
    }
    Non funziona, errore sql.
    Coma mai? Gli apici mi sembrano giusti... il codice intorno alla riga con il WHERE è esatto perchè eseguendo un Select * nel ciclo for viene tutto letto bene... dov'è l'errore?

  2. #2
    $result = mysql_query($query) or die(mysql_error());

    così puoi vedere (e postare) l'errore
    Addio Aldo, amico mio... [03/12/70 - 16/08/03]

  3. #3
    Il messaggio è:
    codice:
    Non è stato possibile aggiornare il database.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 'area privata per gli iscritti su supporto database Sql.', data=
    PS: c'era un errorino che ho sistemato (la data sul db è YYYY-MM-GG mentre nel campo che vado a prendere è già stata formattata in GG-MM-YYYY), quindi nel ciclo ho inserito anche:
    codice:
    list ($anno, $mese, $giorno) = split ('[/.-]', $_POST['datanews'.$i]); 
    $_POST['datanews2'.$i]=$giorno."-".$mese."-".$anno;
    e quindi il codice diventa:
    codice:
    $query = "UPDATE Tabella SET titolo='{$_POST['titolo'.$i]}', testo='{$_POST['testo'.$i]}', data='{$_POST['datanews'.$i]}', sito='codiceuno' WHERE data='{$_POST['datanews2'.$i]}'";
    ma comunque non funziona.

    Dalla sintassi dell'errore pare si blocchi quando deve inserire il campo data di questa news, il cui campo testo finiva appunto con: area privata per gli iscritti su supporto database Sql.
    La news è la prima che il ciclo for trova, poichè datanews0 è vuota.
    Nel database sql la data è un campo date, non text.

  4. #4
    Ho risolto. Nel campo testo c'erano degli apici e backslash che ho formattato.
    Purtroppo però non posso aggiornare i campi data altrimenti l'UPDATE non funziona (sovrascrive le righe con la stessa data), quindi dovrò appigliarmi all'id.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.