- Home
- Categorie
- Coding e Sistemistica
- Coding
- non inserisce i dati nel db
-
Hai ragione, ma ero solo per leggere se la modifica era andata a buon fine...al posto di quello ho inserito...
[PHP]$m=mysql_query("UPDATE annunci_cerco SET title='$title',body='$body' WHERE id=$id_ann");
if($m){echo"modifica ok";
}else{echo"impossibile modificare";}
[/PHP]
Però le modifiche non vanno a buon fine..perchè leggo impossibile modificare...come è possibile?
-
La query genera un qualche errore, aggiungi mysql_error() per mostrarlo.
-
@Thedarkita said:
La query genera un qualche errore, aggiungi mysql_error() per mostrarlo.
Mi da questo messaggio fallitaQuery was empty
-
Devi fare in questo modo:
[php]
$m=mysql_query("UPDATE annunci_cerco SET title='$title',body='$body' WHERE id=$id_ann") or die(mysql_error());
if($m){echo"modifica ok";
}else{echo"impossibile modificare";}
[/php]
-
ecco l'errore che mi da..
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 1
la seconda olta che ho provato mi dice sempre fallitaQuery was empty
-
Avrai il carattere ' in una delle 3 variabili che passi alla query, devi usare addslashes.
TI consiglio inoltre una lettura di questa guida:
http://www.giorgiotave.it/forum/scripting-e-risorse-utili/189074-guida-sql-injection.html
-
Mi puoi spiegare cosa significa?
-
Dovresti leggere la guida per capire, li è tutto spiegato sui problemi che derivano dagli apici e determinate configurazioni di php.
-
Adesso funziona tutto!!!mi è bastato cambiare questo della pag contenente i dati inviati dal form
$id_ann=$_POST['id'];
al postodi $id_ann=$_GET['id'];graazie dell'aiuto!!!
-
volevo chiedere ancora una volta..vorrei verificare prima di una modifica e di una cancellazione l'esistenza del messaggio..come posso fare?
-
Fai una query select e controlli con mysql_num_rows se c'è il record.
-
Tipo una cosa del genere?
[PHP]if($title!="" && $body !=""){
$risultato = mysql_query("SELECT * FROM annunci_offro WHERE autore='".$_SESSION['utente']."'")or die(mysql_error("query annunci fallita"));
mysql_num_rows($risultato);$modifica=mysql_query("UPDATE annunci_offro SET title='$title',body='$body' WHERE id=$id_ann") or die(mysql_error("query modifica fallita"));
echo"modifica ok";
header("refresh:2;URL=annunci_offro.php");
}else{echo"impossibile modificare"; header("refresh:2;URL=annunci_offro.php"); }
}
mysql_close();?>
[/PHP]dove prima della query update ho messo select con il num_rows
-
[php]
mysql_num_rows($risultato);
[/php]
Restituisce il numero di record quindi tu dovresti fare una cosa del tipo:
[php]
if(mysql_num_rows($risultato) == 0)
die('ID non presente');
[/php]
-
[PHP]
if($title!="" && $body !=""){
$risultato = mysql_query("SELECT * FROM annunci_offro WHERE autore='".$_SESSION['utente']."'")or die(mysql_error("query annunci fallita"));
if(mysql_num_rows($risultato) == 0)
die('ID non presente');$modifica=mysql_query("UPDATE annunci_offro SET title='$title',body='$body' WHERE id=$id_ann") or die(mysql_error("query modifica fallita"));
echo"modifica ok";
header("refresh:2;URL=annunci_offro.php");
}else{echo"impossibile modificare"; header("refresh:2;URL=annunci_offro.php"); }
}
mysql_close();?>
[/PHP]
Mi diresti se va bene così?
-
Si va bene cosi, ma la funzione mysql_error non ha come primo parametro una stringa.
-
@Thedarkita said:
Si va bene cosi, ma la funzione mysql_error non ha come primo parametro una stringa.
Quindi dovrei togliere il mysql_error?
-
Dovrebbe diventare una cosa di questo tipo:
[php]
or die("query annunci fallita: ".mysql_error())
[/php]
-
@Thedarkita said:
Dovrebbe diventare una cosa di questo tipo:
[php]
or die("query annunci fallita: ".mysql_error())
[/php][PHP]$q="SELECT * FROM utenti WHERE username='$username'";
$ris=mysql_query($q) or die("fallita");
if(mysql_affected_rows()== 0){
echo"non presente";}else{
$c = isset($_GET['cancella']) ? $_GET['cancella'] : "";
if ($_POST["canc"]=="si") { // se sceglie si//eseguo la query per la cancellazione dell'account $query="DELETE FROM utenti WHERE username='$username'"; $res=mysql_query($query) or die(" query cancellazione account fallita"); // in caso di problemi con la query $messaggio="dati cancellati"; header("refresh:; URL=home.php");
}else{ //altrimenti se sceglgo no i dati non vengono cancellati
if($_POST["canc"]=="no")$messaggio="i dati non sono stati cancellati";
$username=$_SESSION['utente'];}
echo $messaggio;
}
}[/PHP]Mi dici se può andare il controllo per verificare prima della cancellazione se l'utente è presente?
-
No, mysql_affected_rows serve per query di update/delete/insert.
-
Quindi per cancellare un utente, verifico la sua esistenza se c'è lo cancello...correggo così?
[php]
$q="SELECT * FROM utenti WHERE username='$username'";
$ris=mysql_query($q) or die("fallita");
if(mysql_num_rows()== 0){
echo"user non presente";}else{
$c = isset($_GET['cancella']) ? $_GET['cancella'] : "";
if ($_POST["canc"]=="si") { // se sceglie si//eseguo la query per la cancellazione dell'account $query="DELETE FROM utenti WHERE username='$username'"; $res=mysql_query($query) or die(" query cancellazione account fallita"); // in caso di problemi con la query $messaggio="dati cancellati"; header("refresh:; URL=home.php");
}else{ //altrimenti se sceglgo no i dati non vengono cancellati
if($_POST["canc"]=="no")$messaggio="i dati non sono stati cancellati";
$username=$_SESSION['utente'];}
echo $messaggio;
}
}
[/php]