Newsgroup: it.comp.www.php
Titolo: Inserimento in database

Ho due variabile che vengono passate da un form quindi:
$group = $_POST['group'];
$topic = $_POST['topic'];
Poi ho
$connessione=mysql_connect($host,$user,$pass) or die ("Errore durante la
connessione al database");
$inserimento="INSERT INTO peti (`group`,`topic`)
VALUES('".$group."','".$topic."')";
mysql_db_query($db2,$inserimento,$connessione);
mysql_close($connessione);
echo ("inserimento ok");
Lo script mi dice inserimento ok ma poi se vado a vedere nn ha inserito
nulla nel DB, perchè? dov'è sbagliato il codice?
-- 
Francesco 'Imperator' Ricci [FIAG Member] {26/05/2004 19.10.55}
WWW.UNDERGROUNDSECURITY.NET
 ... Sicurezza Informatica e non solo...
«»Meglio esserci lasciati che non esserci mai incontrati«» KEKKA TVB :o*
ICQ 168442149 / MSN 
imp3...@libero.it
 / MAIL 
impe...@despammed.com

 inserito nulla nel DB, perchč? dov'č sbagliato il codice?
Lo script ti dira' sempre "inserimento ok"! anche se la query non va a
buon fine!
Fai <?php echo mysql_error(); ?> (dopo che hai fatto la query)
C:\Simone\Valenti

 echo mysql_error();
Non mi da nessun errore
-- 
Francesco 'Imperator' Ricci [FIAG Member] {27/05/2004 16.41.36}
WWW.UNDERGROUNDSECURITY.NET
 ... Sicurezza Informatica e non solo...
姣Meglio esserci lasciati che non esserci mai incontrati姣 KEKKA TVB :o*


 Non mi da nessun errore
hai settato nel file php.ini:
 error_reporting = E_ALL
 display_errors = On
per assicurarti che nel tuo script non ci siano errori,
come variabili non assegnate?
hai provato a fare la query manualmente dal client MySql?
il tuo scritpt sembra esatto, sempre che sia un estratto di quello
che usi, dato che non vedo l'assegnamento dei parametri che usi
per conneterti al db ed il nome del database!
in fase di debug usa sempre 'echo' ( o 'print()') per mostrare
a video il contenuto delle risorse, delle query, i messaggi di errore,
etc...
C:\Simone\Valenti

 per conneterti al db ed il nome del database!
Ti scrivo il codice completo.
<?
$host="localhost";
$user="aaaaa";
$pass="aaaaa";
$db2="aaaaa";
$group = $_POST['group'];
$topic = $_POST['topic'];
$connessione=mysql_connect($host,$user,$pass) or die ("Errore durante la
connessione al database");
$inserimento="INSERT INTO peti (`group`,`topic`)
VALUES('".$group."','".$topic."')";
mysql_db_query($db2,$inserimento,$connessione);
mysql_close($connessione);
echo ("inserimento ok");
echo mysql_error(); 
?>  
-- 
Francesco 'Imperator' Ricci [FIAG Member] {27/05/2004 17.12.16}
WWW.UNDERGROUNDSECURITY.NET
 ... Sicurezza Informatica e non solo...
«»Meglio esserci lasciati che non esserci mai incontrati«» KEKKA TVB :o*


 ?>
Fine.

 
'mysql_error()' lo devi mettere dopo 'mysql_db_query()'.
Questa funzione ti restituisce l'errore dell'ultima operazione che hai
fatto sul database.
COme hai scritto tu, ti segnala l'eventuale errore
relativo all'operazione di chiusura...
...ma a te interessa quello relativo all'invio di della query!
C:\Simone\Valenti

 che non h una insert mysql. Correggi con
[cut]
Non e propriamente corretto: 
 perche l'uso del 'back tick' ` (alt+96) e ammesso 
 per delimitare i nomi dei campi di una tabella,
 e la stringa con essi presenti non viene trasformata 
 in una con i  singoli apici.
 (e invece errato, come sostieni tu, l'uso dell'apice singolo!)
C:\Simone\Valenti

Fine.
Mi dice "Colonna sconosciuta 'group' in 'field list'"
Ovvero...
-- 
Francesco 'Imperator' Ricci [FIAG Member] {28/05/2004 15.08.02}
WWW.UNDERGROUNDSECURITY.NET
 ... Sicurezza Informatica e non solo...
姣Meglio esserci lasciati che non esserci mai incontrati姣 KEKKA TVB :o*


Simone Valenti <simonevalentiNO_SPAM@NO_SPAMlibero.it> wrote in message
2ho99dF...@uni-berlin.de...


Hai ragione tu, è chiaramente una mia svista.
Non ho mai usato l'apice inverso e non l'ho mai visto usare nei libri e\o
nella documentazione che ho guardato e perciò  quando ho visto quegli apici
a delimitare i campi ho travisato il loro significato.


...ovvero non esiste la colonna 'group' nelle tabelle in cui intendi
effettuare l'inserimento? ^_^
Problema risolto?
Ne approfitto per farti notare una cosa (o farla notare a chi non ne è a
conoscenza, nel caso tu la sappia già). Dal manuale di MySQL:
The following words are explicitly reserved in MySQL. Most of them are
forbidden by ANSI SQL92 as column and/or table names (for example, GROUP). A
few are reserved because MySQL needs them and is (currently) using a yacc
parser:
[segue immensa lista di parole riservate] ;-)
The following symbols (from the table above) are disallowed by ANSI SQL but
allowed by MySQL as column/table names. This is because some of these names
are very natural names and a lot of people have already used them.
    ACTION
    BIT
    DATE
    ENUM
    NO
    TEXT
    TIME
    TIMESTAMP
Cioè non puoi usare per i nomi di campi e tabelle le parole riservate in
[immensa lista] tranne le 8 sopracitate (anche se è deprecato). Se li quoti
con il back tick (alt+96) (vedi post di Simone Valenti) non hai questo
problema.
Personalmente consiglio di utilizzare per i nomi delle tabelle un metodo del
tipo <prefisso_applicazione><nome_tabella>        es:        ppp_utenti
(applicazione=pippo)
e per i campi
<prefisso_tabella><nome_campo>                  es:        put_id
così non si rischia di incorrere in questi errori e si ha il vantaggio (se
scelti correttamente i prefissi) di avere nomi univoci (riducendo la
lunghezza di SELECT su più tabelle, ad esempio: ma è forse il vantaggio
minore)
Saluti
LB

 $topic = $_POST['topic'];
Non chiedetemi perché, ma quando metto gli " ' " in post e request mi dà
errore (e me lo dà il php, non il mysql)...
prova a levarli..
ciao,
Luca(riello)

"Luca(riello)" <chu...@nOlycossPaM.it> ha scritto nel messaggio
news:g1_tc.257746$hc5.11...@news3.tin.it...

...se lo fai poi PHP ti da un warning...
L'apice singolo serve a racchiudere le stringhe, come l'apice doppio (con
alcune differenze di dettaglio), e nel tuo caso il loro uso è equivalente.
Comunque quale errore ti da? Sei sicuro che le variabili che cerchi di
leggere siano state istanziate?
Prova con
if (isset($_POST['group'])) $group = $_POST['group'];
else echo "<br>Variabile <b>group</b> non settata!";
if (isset($_POST['topic'])) $group = $_POST['topic'];
else echo "<br>Variabile <b>topic</b> non settata!";
così vedi se il problema sta nel passaggio dei parametri.
Saluti
LB