Errore sintassi SQL "UPDATE" in file PHP

Komix

Nuovo Utente
18 Mar 2012
8
0
0
Salve, eccomi col secondo post, allora... ho fatto uno script che, richiama una funzione che deve eseguire una query mysql, per la precisione UPDATE, però è un pomeriggio che non fa che restituirmi appunto l'errore di sintassi, che di solito appunto mi indica che la stessa query l'ho scritta sbagliata, ho provato a modificarla in mille modi ma c'è sempre un errore nella sintassi...
così è come ho scritto la query :

PHP:
$query = "UPDATE pagine SET nome_pagina='$titolo', cont_pagina='$contenuto' WHERE id='$id'";
questa è la funzione per intero :
PHP:
function EditPage($id,$titolo,$contenuto) {
	$query = "UPDATE pagine SET nome_pagina='$titolo', cont_pagina='$contenuto' WHERE id='$id'";
	$ris = mysql_query($query);
	if(!$ris) {
		echo "<br>Non sono riuscito a modificare la pagina<br>".mysql_error()."<br><br><a href=\"cpanel.php\">TORNA INDIETRO<a>";
		} else {
		header("Location : cpanel.php");
		}
		
	
	}
E questa è la funzione richiamata da una pagina :

PHP:
EditPage($_GET['id'], $_POST['titolo_pagina'], $_POST['cont']);
Non riesco a capire cosa c'è che non va, ci sbatto la testa da un giorno e davvero non mi ha mai creato tutti questi problemi una semplice sintassi UPDATE
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
metti dei var_dump (questo sconosciuto, utilissimo nel debug)

PHP:
<?php
function EditPage($id,$titolo,$contenuto) {
    var_dump($id);
	var_dump($titolo);
	var_dump($contenuto);
	$query = "UPDATE pagine SET nome_pagina='$titolo', cont_pagina='$contenuto' WHERE id='$id'";
	var_dump($query);
    $ris = mysql_query($query);
	//....
?>
coi primi tre vedi se i valori vengono effettivamente trasmssi e come, con l'ultimo (se primi tre ok) vedi se la querry viene effettivamente scritta come dovrebbe

cosi ad occhio non vedo errori di sintassi
altra cosa verifica esatta corrispondenza tra nomi nella query e quelli dei campi della tabella (anche maiuscole/minuscole)
 

Komix

Nuovo Utente
18 Mar 2012
8
0
0
Le stringhe ci sono e vengono passate...i nomi delle tabelle corrispondono a quelli della query... davvero non so cosa sia...
 

Komix

Nuovo Utente
18 Mar 2012
8
0
0
Ho fatto uno screen così puoi vedere :

Immagine.png
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
vedo molti caratteri strani nel testo, fai una prova così

PHP:
function EditPage($id,$titolo,$contenuto) { 
    $titolo=htmlspecialchars($titolo);
	$contenuto=htmlspecialchars($contenuto);
	$query = "UPDATE pagine SET nome_pagina='$titolo', cont_pagina='$contenuto' WHERE id='$id'"; 
    $ris = mysql_query($query); 
    if(!$ris) { 
        echo "<br>Non sono riuscito a modificare la pagina<br>".mysql_error()."<br><br><a href=\"cpanel.php\">TORNA INDIETRO<a>"; 
//......
 

Komix

Nuovo Utente
18 Mar 2012
8
0
0
Ok adesso la query va... GRAZIE :D
c'è solo una cosa, non funziona il redirect :S
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
c'è solo una cosa, non funziona il redirect :S
probabilmente hau un qualche output html prima di hesder, header deve essere la prima istruzione, se non possibile prova a mettere alla prima riga

PHP:
<?php
ob_start();//sulla prima
//tutto il resto php e/o html

ob_end_flush();//sull'ultima
?>
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
23
Roma
alessandro1997.netsons.org
Il problema era probabilmente quell'apice in uno dei campi da aggiornare. Applica addslashes alle variabili che inserisci nel database:
PHP:
<?php
$testo = "[...] molte anzi tempo all'Orco, generose travolse alme d'eroi [...].";

$testo = addslashes($testo);

// [...] molte anzi tempo all\'Orco, generose travolse alme d\'eroi [...].
echo $testo;

$testo = stripslashes($testo);

// [...] molte anzi tempo all'Orco, generose travolse alme d'eroi [...].
echo $testo;
?>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
Il problema era probabilmente quell'apice in uno dei campi da aggiornare. Applica addslashes alle variabili che inserisci nel database:
PHP:
<?php
$testo = "[...] molte anzi tempo all'Orco, generose travolse alme d'eroi [...].";

$testo = addslashes($testo);

// [...] molte anzi tempo all\'Orco, generose travolse alme d\'eroi [...].
echo $testo;

$testo = stripslashes($testo);

// [...] molte anzi tempo all'Orco, generose travolse alme d'eroi [...].
echo $testo;
?>
mi spieghi cosa c/'entra il "pelato achille"?