Pagina 1 di 3
Errore nel creare un record
Inviato: 21/11/2011, 14:58
da Lady R
Ciao,
sto sviluppando uno script in PHP e MySQL, ma ho un problema che non riesco a risolvere.
Eseguo questa Query:
Codice: Seleziona tutto
INSERT
INTO psw_users (`username`, `email`, `password`, `title`)
VALUES (`Remedy Memory`, `mia@email.it`, `segreta`, Principiante)
Il database:
Codice: Seleziona tutto
id int(11)
2 username text utf8_bin
3 email text utf8_bin
4 password text utf8_bin
5 title text utf8_bin
6 level int(11)
7 pe int(11)
8 fame int(11)
9 honor float
L'errore è:
Se sostituisco
Remedy Memory con
username, trova la colonna e prosegue con la colonna email, dando un errore analogo..
In pratica prende quelli che io intendo come valori e li usa come nomi delle colonne!
Ma dove sbaglio?

Re: Errore nel creare un record
Inviato: 21/11/2011, 15:08
da Micogian
Togli gli apici dai nomi dei campi.
EDIT:
Quello è un script PHP, se lo devi usare in phpbb dovresti fare così:
Codice: Seleziona tutto
sql = "INSERT INTO " . USERS_TABLE . " (username, email, password, title)
VALUES (`Remedy Memory`, `mia@email.it`, `segreta`, 'Principiante')";
if ($db->sql_query($sql))
{
$msg = "Inserimento eseguito correttamente";
}else{
$msg = "Errore nella procedura";
}
Re: Errore nel creare un record
Inviato: 21/11/2011, 15:24
da Lady R
Da comunque errore
Codice: Seleziona tutto
INSERT
INTO psw_users (`username`, `email`, `password`, `title`)
VALUES (Remedy Memory,mia@email.it,segreta,Principiante)
Codice: Seleziona tutto
#1064 - 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 'Memory,mia@email.it,segreta,Principiante)' at line 3
Ho notato che se inserisco solo valori numerici non da errori
Re: Errore nel creare un record
Inviato: 21/11/2011, 15:28
da Micogian
hO detto "campi" non valori, Vedi il mio EDIT precedente.
A meno che, essendo un INSERT non debba indicare tutti i campi, anche se i valori sono vuoti.
Tra l'altro, nella prima query avevi dimenticato gli apici su "Principiante", magari è tutto lì il problema.
Re: Errore nel creare un record
Inviato: 21/11/2011, 15:30
da Lady R
No non lo devo usare in phpBB però.
non credo sia necessario.. sennò a cosa serve indicare i valori di default dei campi? e l'indice con l'auto_increment a cosa serve?
Non è neanche il problema su Principiante, perché mettendoli non cambia niente, e comunque l'errore viene dato prima di raggiungere quel valore
Re: Errore nel creare un record
Inviato: 21/11/2011, 15:37
da Micogian
Pel l'auto-increment d'accordo, gli altri campi prenderanno i valori predefiniti, ma nel tuo esempio mancavano gli apici a Principiante che è una stringa.
Per me va così:
Codice: Seleziona tutto
INSERT
INTO psw_users (username, email, password, title)
VALUES (`Remedy Memory`, `mia@email.it`, `segreta`, 'Principiante');
Re: Errore nel creare un record
Inviato: 21/11/2011, 15:38
da Lady R
Re: Errore nel creare un record
Inviato: 21/11/2011, 15:46
da Micogian
Ma, io ho sempre fatto così
Codice: Seleziona tutto
$sql = "INSERT INTO tabella (campo1, campo2, campo3, campo4) VALUES ('uno', 'due', 'tre', 'quattro' )";
$result = mysql_query ($sql);
i campi senza virgolette, le stringhe invece si. I numeri senza virgolette, punto e virgola alla fine.
Re: Errore nel creare un record
Inviato: 21/11/2011, 15:48
da Lady R
non cambia niente a passargli una variabile contenente la query o passargli direttamente la query..
non capisco dove sia il problema

Re: Errore nel creare un record
Inviato: 21/11/2011, 15:58
da Micogian
Lady R ha scritto:non cambia niente a passargli una variabile contenente la query o passargli direttamente la query..
non capisco dove sia il problema

Questo è vero ma nella tua prima query non andavano gli apici nei campi, il valore Principiante non aveva gli apici e mancava il punto e virgola finale.
L'alternativa sarebbe questa:
Codice: Seleziona tutto
INSERT INTO psw_users SET username= 'Remedy Memory', email = 'mia@email.it', password = 'segreta', title = 'Principiante'
Ho notato una differenza tra gli apici che usi tu e i miei, che sia quello ? Prova con le virgolette