Sto diventando pazzo

Questo non lo capisco, ho fatto una query così strutturata:

$campi = "";

for ($y=1;$y<=2;$y++)

{

   for ($x=1;$x<=2;$x++)

   {

   $campi = $campi."`$y$x` INT( 3 ) NOT NULL ,";

   }

}

$campi = $campi . "`bioma` text";

$query = "CREATE TABLE `pianeta` ($campi)";

Ora così come l'ho scritta funziona, se però al carattere ` sostituisco quello ' (anche perchè il primo non è sulla tastiera...) la query non funziona! Non solo, se invece inserisco una query tipo la seguente (presa dal corso on line):

$query = "INSERT INTO utenti (nome,email,sesso,newsletter,attivita,messaggio)

         VALUES ('Mario Rossi','m.rossi@email.it',1,1,2,'inviatemi del materiale illustrativo')"; 

in cui compaiono le virgolette semplici (cioè ') la query funziona...

Perchè?!

Grazie

FraCroce :tichedoff:   

inviato 10 anni fa
FraCroce
X 0 X

il carattere ` si chiama backtick e nell'SQL viene usato per racchiudere i nomi dei campi di una tabella, oppure il nome di una tabella, ad esempio quando potrebbero esserci delle ambiguità (es. un campo che si chiama text potebbe confondersi con il tipo di dato text)

il backtick non si usa mai per delimitare una stringa! Nella query di inserimento hai indicato i valori da inserire nella tabella. Alcuni di questi sono delle stringhe e vanno delimitate (racchiuse) con un semplice apice.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Grazie,

ma la cosa strana è che se non uso il backtick non funziona! Cioè nn so perchè, ma anche le stringhe devo delimitare con il bactick... se uso l'apice non va!  :-\ Però nel secondo esempio invece l'apice funziona.

Grazie mille

Francesco

P.S. Cmq per sapere come si "fa" il backstick (oltre che col copia e incolla  ;))

risposto 10 anni fa
FraCroce
X 0 X

Nel primo caso hai usato il backtick per delimitare nomi di campi (e non dati di tipo stringa) per cui ha funzionato. Se usi degli apici semplici la query non funziona perché MySQL non capisce che stai specificndo i nomi dei campi della tabella!

Nel secondo invece (la INSERT) all'interno di VALUES (....) ci sono dei dati. Quelli di tipo stringa vanno delimitati con l'apice e non con il backtick.

 :bye:

P.S.: sotto Linux il backtick si ottiene con Alt Gr + '

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda