- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- Problema di salvataggio dati php-MySQL
-
Ciao Alessandro,
per quanto riguarda '$email' ho commesso un errore di battitura, per quanto riguarda 'echo mysql_error($db)' mi ritorna: mysql_error(Resource id #4).
inserisco la tabella 'elenco_soci' ricavate dall'esportazione di phpmyadmin:-- -- Struttura della tabella `elenco_soci` -- CREATE TABLE IF NOT EXISTS `elenco_soci` ( `id_socio` int(10) NOT NULL auto_increment, `data_iscrizione` int(13) default NULL, `username` varchar(32) default NULL, `password` varchar(32) default NULL, `cognome` varchar(30) default NULL, `nome` varchar(30) default NULL, `nazionalità` varchar(20) default NULL, `comune_nascita` varchar(30) default NULL, `provincia_nascita` varchar(2) default NULL, `data_nascita` int(13) default NULL, `sesso` varchar(1) default NULL, `codice_fiscale` varchar(16) default NULL, `comune_residenza` varchar(30) default NULL, `provincia_residenza` varchar(2) default NULL, `cap` varchar(5) default NULL, `indirizzo` varchar(50) default NULL, `cartellino_figc` varchar(8) default NULL, `telefono_abitazione` varchar(15) default NULL, `telefono_cellulare` varchar(15) default NULL, `email` varchar(50) default NULL, PRIMARY KEY (`id_socio`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=769 ;
e l'ultima parte di codice per il salvataggio dei dati
$query = "INSERT INTO 'elenco_soci' ('data_iscrizione', 'username', 'password', 'cognome', 'nome', 'nazionalita', 'comune_nascita', 'provincia_nascita', 'data_nascita', 'sesso', 'codice_fiscale', 'comune_residenza', 'provincia_residenza', 'cap', 'indirizzo', 'cartellino_figc', 'telefono_abitazione', 'telefono_cellulare', 'email') VALUES ('$data_iscrizione', '$username', '$password', '$cognome', '$nome', '$nazionalita', '$comune_nascita', '$provincia_nascita', '$data_nascita', '$sesso', '$codice_fiscale', '$comune_residenza', '$provincia_residenza', '$cap', '$indirizzo', '$cartellino_figc', '$telefono_abitazione', '$telefono_cellulare', '$email')"; echo "<br><br> Query: $query<br><br> db: $db"; $risultato=mysql_query($query,$db); echo "<br>my_sql error: mysql_error($db)<br>"; echo "<br><br>Risultato: $risultato | mysql_query($query,$db)"; echo "<br><br>db_host, db_user e db_pass: $db_host, $db_user, $db_pass"; mysql_close();
-
Nome del campo sul db:
`nazionalità`
lo hai scritto con à, mentre nella insert è senza accento.
-
E' vero..
l'ho rinominato nel db da 'nazionalità' a 'nazionalita'
però mi ritorna sempre lo stesso errore.Ma cosa significa 'mysql_error(Resource id #4)'?
-
Significa che non hai scritto il codice come ti ho suggerito:
[PHP]
echo mysql_error($db);
[/PHP]
è diverso da
[PHP]
echo "<br>my_sql error: mysql_error($db)<br>";
[/PHP]All'interno dei doppi apici vengono valutate le variabili, ma non vengono eseguite le funzioni. Quindi invece di eseguire la funzione che ti ho suggerito hai semplicemente scritto a video il nome della funzione con, tra le parentesi, il contenuto della variabile $db che, come detto prima, è l'unica che è stata valutata.
Volendo inserire i <br> e altro testo oltre al normale output della funzione avresti dovuto scrivere:
[PHP]
echo "<br>my_sql error: ".mysql_error($db)."<br>";
[/PHP]Lo stesso discorso vale per
[PHP]
echo "<br><br>Risultato: $risultato | mysql_query($query,$db)";
[/PHP]
(Qui sarebbe inutile comunque eseguire la funzione visto che mysql_query() è già utilizzata 2 righe prima).Alessandro
-
scusami, hai perfettamente ragione, ma mi sto perdendo un pò.
l'errore che mi restituisce: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 ''elenco_soci' ( 'data_iscrizione', 'username', 'password', 'cognome', 'nome' at line 1
-
Ho tolto tutti gli apici ai nomi dei campi e funziona.
E' possibile che mi vedeva i singoli apici come doppi apici?
Ho altre tabelle con gli apici tipo questa e funziona regolarmente:
$query = "INSERT INTO `news` (`data`, `titolo`, `contenuto`, `nome`, `cognome`) values ('$data', '$titolo','$contenuto', '$nome', '$cognome')"; Echo "News inserita correttamente!"; $risultato=mysql_query($query,$db); mysql_close();
qual'è la differenza di questi apici?
Grazie mille per la tua disponibilità
-
Confronta la struttura della tabella che ti ha generato phpmyadmin con la tua query.
Questo ` (backquotes)
e questo **' **(quotes)
sono due apici differenti.Per delimitare i nomi delle tabelle e dei campi devi usare il primo, backquotes.
L'altro, ovvero l'apice semplice che ottieni normalmente premendo il relativo tasto sulla tastiera, serve a delimitare i dati.[Edit:] stavo giusto scrivendoti quello che poi hai chiesto
Alessandro
-
Grazie mille Alessandro, se volsessi scrivere il backquotes da tastiera?
-
Sulla tastiera italiana non è presente.
L'unico modo che conosco è passando attraverso il codice ASCII, che è 96.ALT + 96 dal tastierino numerico]
Alessandro
-
grazie
e buonanotte