Vai al contenuto

Ricerca PHP - MySQL ed inserimento record


magomac

Messaggi raccomandati

strano che tu debba ricorrere al concatenamento delle stringhe per impostare la query, io nel mio codice ho sempre definito la query come stringa (definita cioè tra virgolette " e non tra apici ' come nel tuo caso) e inserendo dentro direttamente le variabili php e ha sempre funzionato. comunque se hai risolto il problema, ottimo così.

credo di aver capito che forse il tuo problema con la tabella era legato anche al "case" maiuscolo o minuscolo per il nome delle colonne, in teoria dovrebbe essere ininfluente ma apparentemente così non è.

la sintassi di insert che hai usato tu non è del tutto corretta, io avrei scritto qualche riga in più per memorizzare i valori $_POST in variabili a se (per evitare problemi di parsing con troppi apici in giro), tipo $nome=$_POST['nome'] ecc. e poi

$query = "insert into $classe values ('$nome','$tesserafiv',

eccetera, con l'avvertenza importante che l'ordine con cui vengono elencati i parametri deve essere esattamente lo stesso con cui sono definite le colonne nella tabella di destinazione.

in alternativa puoi usare anche come sintassi

$query = "insert into $classe ('NOME', 'CIRCOLO', ... ) values ('$nome', '$circolo', ....);";

che ha il vantaggio di non vincolarti a elencare nella prima parentesi le colonne nell'ordine in cui son definite nella tabella mysql, ovviamente però i valori indicati nella seconda parentesi, dopo values, devono essere in ordine rispetto alla sequenza usata nella prima parentesi.

Ricordati che tutte le stringhe di query vanno terminate con il ; :ghghgh:

Serve aiuto? Posso darti una mano in

Webmasters - Aiuto Software - Da Windows a Mac

Mappa Utenti ItaliaMac

[[miao]]

Link al commento
Condividi su altri siti

  • Risposte 100
  • Creato
  • Ultima Risposta

Allora questo è il codice della terza pagin

<?php

$tabelladatabase = $_POST[classe];

$host = 'localhost';

$user = 'root';

$password = 'root';

$database = 'cnc_gestioneregate';

$db = mysql_connect($host, $user, $password) or die ("Impossibile connettersi al server specificato, inserimento record non riuscito");

mysql_select_db($database, $db) or die ("Impossibile connettersi al database, inserimento record non riuscito");

$classe = $_POST[classe];

$velico = $_POST[velico];

$nome = $_POST[nome];

$fiv = $_POST[tesserafiv];

$circolo = $_POST[circolo];

$query = "insert into $classe values ('$velico','$nome','$fiv','$circolo')";

?>

risultato: VIENE UNA PAGINCOMPLETA (con l'intestazione e lo sfondo) ma non inserisce niente nel database!

Link al commento
Condividi su altri siti

beh, ha ragione pure il php: se definisci la query e poi non gliela fai eseguire è un pochino difficile che inserisca qualcosa nel database :ghghgh:

in altre parole manca l'ultima riga:

$risultato = mysql_query($query) or die "Errore in fase di inserimento dei dati";

Serve aiuto? Posso darti una mano in

Webmasters - Aiuto Software - Da Windows a Mac

Mappa Utenti ItaliaMac

[[miao]]

Link al commento
Condividi su altri siti

Allora aggiungendo semplicemente quell riga mi dava pagina bianca!!!!!

Provando a modificare il codice in questo modo invece la pagina viene con l'errore che riporto in seguito:

<?php

$tabelladatabase = $_POST[classe];

$host = 'localhost';

$user = 'root';

$password = 'root';

$database = 'cnc_gestioneregate';

$db = mysql_connect($host, $user, $password) or die ("Impossibile connettersi al server specificato, inserimento record non riuscito");

mysql_select_db($database, $db) or die ("Impossibile connettersi al database, inserimento record non riuscito");

$classe = $_POST[classe];

$velico = $_POST[velico];

$nome = $_POST[nome];

$fiv = $_POST[tesserafiv];

$circolo = $_POST[circolo];

$query = 'INSERT INTO `'.$classe.'` ("velico, nome, fiv, circolo") VALUES (`'.$velico.'`,`'.$nome.'`,`'.$fiv.'`,`'.$circolo.'`)';

$risultato = mysql_query($query)OR die(mysql_error());

?>

L'ERRORE E':

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 '"velico, nome, fiv, circolo") VALUES (`ITA`,`NOMEXXXXX COGNOM`,`624796`,`024-01-' at line 1

Soprattutto ho notato una cosa: nel testo dell'errore non ci sta tutto!!!!! Ad esempio il nome del circolo non è solo 024-01 ma è molto più lungo e più ci sono caratteri prima (nel nome e nel numero velico) più se ne visualizza, come se ci fosse un limite massimo di caratteri!!!

Idee??

Link al commento
Condividi su altri siti

i nomi delle colonne vanno messi singolarmente tra apici e non tutti insieme tra virgolette:

insert into $classe ('velico','nome','fiv','circolo')

il testo del messaggio di errore tronca la sintassi di ingresso in modo da darti l'indicazione di dove cercare l'errore, questo è normale

Serve aiuto? Posso darti una mano in

Webmasters - Aiuto Software - Da Windows a Mac

Mappa Utenti ItaliaMac

[[miao]]

Link al commento
Condividi su altri siti

oltre all'errore che ti ho segnalato hai dimenticato il ; di chiusura della query:

da:

$query = 'INSERT INTO `'.$classe.'` ("velico, nome, fiv, circolo") VALUES (`'.$velico.'`,`'.$nome.'`,`'.$fiv.'`,`'.$circolo. '`)';

prova a modificare a:

$query = 'INSERT INTO `'.$classe.'` (`velico`, `nome`, `fiv`, `circolo`) VALUES (`'.$velico.'`,`'.$nome.'`,`'.$fiv.'`,`'.$circolo. '`);';

Serve aiuto? Posso darti una mano in

Webmasters - Aiuto Software - Da Windows a Mac

Mappa Utenti ItaliaMac

[[miao]]

Link al commento
Condividi su altri siti

Stesso errore di prima!

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 '"velico, nome, fiv, circolo") VALUES (`625744`,`BENEDETTI ANDREA`,`624796`,`024-' at line 1

Codice della pagina:

<?php

$tabelladatabase = $_POST[classe];

$host = 'localhost';

$user = 'root';

$password = 'root';

$database = 'cnc_gestioneregate';

$db = mysql_connect($host, $user, $password) or die ("Impossibile connettersi al server specificato, inserimento record non riuscito");

mysql_select_db($database, $db) or die ("Impossibile connettersi al database, inserimento record non riuscito");

$classe = $_POST[classe];

$velico = $_POST[velico];

$nome = $_POST[nome];

$fiv = $_POST[tesserafiv];

$circolo = $_POST[circolo];

$query = 'INSERT INTO `'.$classe.'` ("velico, nome, fiv, circolo") VALUES (`'.$velico.'`,`'.$nome.'`,`'.$fiv.'`,`'.$circolo. '`);';

$risultato = mysql_query($query)OR die(mysql_error());

?>

Link al commento
Condividi su altri siti

scusa ma mi sa che ti è sfuggita la mia nota sulla sintassi che hai usato visto che hai ripetuto lo stesso errore di prima.

non devi scrivere

INSERT INTO $class ("velico,nome,fiv,circolo")

ma:

INSERT INTO $class (`velico`, `nome`, `fiv`, `circolo`)

ossia: via le virgolette "" e racchiudi ogni nome di colonna tra apici ``

Serve aiuto? Posso darti una mano in

Webmasters - Aiuto Software - Da Windows a Mac

Mappa Utenti ItaliaMac

[[miao]]

Link al commento
Condividi su altri siti

Allora adx con il codice così

<?php

$tabelladatabase = $_POST[classe];

$host = 'localhost';

$user = 'root';

$password = 'root';

$database = 'cnc_gestioneregate';

$db = mysql_connect($host, $user, $password) or die ("Impossibile connettersi al server specificato, inserimento record non riuscito");

mysql_select_db($database, $db) or die ("Impossibile connettersi al database, inserimento record non riuscito");

$classe = $_POST[classe];

$velico = $_POST[velico];

$nome = $_POST[nome];

$fiv = $_POST[tesserafiv];

$circolo = $_POST[circolo];

$query = 'INSERT INTO `'.$tabelladatabase.'` (`velico`, `nome`, `fiv`, `circolo`) VALUES (`'.$velico.'`,`'.$nome.'`,`'.$fiv.'`,`'.$circolo. '`)';

$risultato = mysql_query($query)OR die(mysql_error());

?>

(Se la variabile non la scrivevo tra gli apici e i punti mi dava errore)

mi da questo errore

Unknown column 'ITA5656' in 'field list'

ITA5656 l'avevo messo come numero velico nel form! Non capisco perchè diavolo lo cerca come colonna!

Link al commento
Condividi su altri siti

a me sembrava che la variabile fosse già tra apici e punti negli esempi precedenti, forse mi era andata insieme la vista

mi sfugge comunque ancora un particolare:

nel codice precedente usavi $classe come variabile che contiene il nome della tabella su cui scrivere

nel codice di questo ultimo esempio usi $tabelladatabase come variabile che contiene il nome della tabella su cui scrivere e $classe non viene di fatto utlizzata

non è che ti dà l'errore perché stai puntando a una tabella che non c'entra nulla?

Serve aiuto? Posso darti una mano in

Webmasters - Aiuto Software - Da Windows a Mac

Mappa Utenti ItaliaMac

[[miao]]

Link al commento
Condividi su altri siti

fai una cosa, fai uno zip e mandami il codice originario, forse vado meglio se leggo direttamente quello che hai scritto e poi te lo rispedisco eventualmente corretto

Serve aiuto? Posso darti una mano in

Webmasters - Aiuto Software - Da Windows a Mac

Mappa Utenti ItaliaMac

[[miao]]

Link al commento
Condividi su altri siti

sì è proprio quello che fa casino

allora, il codice modificato che ti ho mandato presuppone che le prime quattro colonne della tabella siano (in ordine) "velico", "nome", "tesserafiv" e "circolo"

per far tornare i conti modifica la query in questo modo:

$query="INSERT INTO $tabelladatabase VALUES ('$numeroVelico', '$nomeAtleta', '$numeroFiv','$circoloVelico','','','','','','','');";

dove '', sono tre caratteri apice apice virgola (non virgolette virgola)

Serve aiuto? Posso darti una mano in

Webmasters - Aiuto Software - Da Windows a Mac

Mappa Utenti ItaliaMac

[[miao]]

Link al commento
Condividi su altri siti

Archiviato

Questa discussione è archiviata e chiusa a future risposte.


×
×
  • Crea Nuovo...