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 è:

Codice: Seleziona tutto

Unknown column 'Remedy Memory' in 'field list'
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
No, dice:

Codice: Seleziona tutto

Unknown column 'Remedy Memory' in 'field list'

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