+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 8 su 8

Discussione: SQL Insert into tabella che non funziona

  1. #1
    UGoldrake non è in linea Scolaretto
    Post
    340

    SQL Insert into tabella che non funziona

    Ciao a tutti.
    Avrei bisogno di una dritta perché non riesco ad inserire i valori di una stringa sql in un db mysql.
    Ho scritto questo codice 2 volte, la prima volta inserisce correttamente i valori in una tabella (tabella P2016Login) la seconda volta ripreso tale e quale, copia-incolla, cambio solo il nome dei campi e della tabella (P2016G) i valori venogno stampati sulla pagina ma non vanno nel db.

    codice:
    <?php 
    	session_start();
    	  $nome= $_REQUEST["nome"];
    	  $cognome= $_REQUEST["cognome"];
    	  $anno= $_REQUEST["anno"];
    	  $IDUtente=$_SESSION['IDUtente'];
    
    //Verifico i valori e passano tutti correttamente, quindi non ci sono errori di battitura.
    	echo $nome . " " . $cognome . " " . $anno . " " . $IDUtente . "<br>";
    ?>
    
    <?php
    	$conn = mysql_connect("localhost", "my_sito", "sito", "password") 
        	or die ("connessione non riuscita");
    
    	if ( !mysql_select_db("my_sito") )
        	{mysql_close($conn);
    		die("Impossibile aprire il database. ");}
    
    	$sql="insert into P2016G (IDG, Nome, Cognome, AnnoDiNascita, IDUtente) " .
        	"VALUES ('Null', '" . $nome . "', '" . $cognome . "', '" . $anno . "', '" . $IDUtente . "')";
    
    // La riga:
            echo  $sql ."<br>";
    // produce questa stampa:
    //      insert into P2016G (IDG, Nome, Cognome, AnnoDiNascita, IDUtente) VALUES ('Null', 'Pluto', 'Pippo', '2016', '43')
    // quindi i valori passano tutti. Ho provato anche senza la chiave primaria / Contatore "IDG", ma con lo stesso risultato.
    
    //	$sql="Select * from P2016G"; //Questo funge... tanto per vedere che non ci siano altri errori
    
    	if (!mysql_query($sql))
    		{echo "Inserimento fallito <br />";} // stampa sempre questa riga e non infila i valori nella tabella
            ...........
    Secondo voi perché accade ciò? Non vedo errori, ce ne sono?
    Il sito è su altervista.org.
    Preciso che non sono ancora passato al php mysqli perché ormai ho cominciato con il php mysql (senza 'i'), faccio un passo alla volta, poi vado avanti.
    e grazie.
    Ugo

  2. #2
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    Post
    2,787
    'Null' è diverso da Null. Inoltre, se IDG è la chiave primaria, probabilmente è anche NOT NULL. Se poi è anche AUTO_INCREMENT lascia che si auto-incrementi da sola.
    Il regolamento del forum: la prima cosa da leggere.

  3. #3
    L'avatar di +m+
    +m+
    +m+ non è in linea Scribacchino
    Post
    922
    Oltre al suggerimento sopra....
    1) non mischiare maiuscole e minuscole nel nome tabelle campi.
    Il funzionamento di mysql è diverso tra windows e linux.
    Suggerisco di usare tutte minuscole e buonanotte

    2) usi mysqli che è deprecato

    3) il tuo codice ha voragini di sicurezza immani, neppure gigantesche.
    Suggerisco fortemente di passare a PDO e modificare alla grande la logica del passaggio dei parametri

  4. #4
    UGoldrake non è in linea Scolaretto
    Post
    340
    Grazie ad entrambi,
    studierò il discorso del Null 'Null' Not Null ... ma non capisco perché se non ce lo metto non funziona lo stesso.

    Ugo

  5. #5
    UGoldrake non è in linea Scolaretto
    Post
    340
    Grazie ancora a tutti, ho trovato l'errore. Era dovuto ai due ID, IDG e IDUtente, che nella query li avevo scambiati, quindi non poteva aggiungermi nel campo A_I IDG il valore che avrei dovuto dirgli di mettere in IDUtente.

    Ugo

  6. #6
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    Post
    2,787
    Quote Originariamente inviato da UGoldrake Visualizza il messaggio
    studierò il discorso del Null 'Null' Not Null ...
    Più che Null e Not Null è una questione di uso delle variabili, costanti, concatenazioni ecc.
    Il regolamento del forum: la prima cosa da leggere.

  7. #7
    UGoldrake non è in linea Scolaretto
    Post
    340
    No, avevi ragione, è stato illuminante il discorso sull'auto_increment, infatti inserivo i dati nei campi invertiti, ed ovviamente inserendo il dato in un campo auto_increment usciva l'errore.
    Comunque come già detto studierò la differenza tra scrivere Null e 'Null', anche se in questo caso mi sembrava corretto l'uso degli apici, perché li metto in tutti gli altri campi, non vedo perché non debba averli anche quel campo; certo è un campo auto_increment, però inizialmente non ci scrivevo dati e mi dava lo stesso errore, quindi non capivo, ma ora è tutto a aposto, devo fare più attenzione a dove scrivo i dati.
    Grazie ancora.

    Ugo

  8. #8
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    Post
    2,787
    Quote Originariamente inviato da UGoldrake Visualizza il messaggio
    Comunque come già detto studierò la differenza tra scrivere Null e 'Null', anche se in questo caso mi sembrava corretto l'uso degli apici, perché li metto in tutti gli altri campi, non vedo perché non debba averli anche quel campo
    Mah! Scusa se te lo dico, ma da questa frase mi sembra che tu abbia le idee un tantino confuse.
    Il regolamento del forum: la prima cosa da leggere.

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi