Aiuto con istruzione INSERT

  • Creatore Discussione Creatore Discussione Marco_88
  • Data di inizio Data di inizio

Marco_88

Utente Attivo
4 Dic 2014
150
0
0
Roma
batwebit.blogspot.it
Ciao a tutti, ho già cercato nel forum e su internet ma non riesco a trovare la soluzione al mio problema.
Non riesco ad inserire i dati in una tabella tramite form con variabili $_POST.


PHP:
<form action="index.php?sezione=privata" method="post">
<fieldset>
<legend>Registrazione:</legend>
<label for="nomecognome">Nome e Cognome:</label><br />
<input id="nomecognome" name="nomecognome" type="text" /><br />
<label for="Email">E-Mail:</label><br />
<input id="email" name="email" type="text" /><br />
<label for="Username">Nome Utente:</label><br />
<input id="username" name="username" type="text" /><br />
<label for="Password">Password:</label><br />
<input id="password" name="password" /><br />
<input name="registrazione" type="submit" value="Submit" />
</form>
</fieldset>

<?php  


    
   
    

    
    //controllo sui dati inviati

    if ($_POST['registrazione'] == "Submit")  {
	
	
	$namesurname = trim(filter_var($_POST['nomecognome'], FILTER_SANITIZE_STRING));
	$email= trim(filter_var($_POST['email'], FILTER_SANITIZE_EMAIL));
	$username = trim(filter_var($_POST['username'], FILTER_SANITIZE_STRING));
	$password = trim(filter_var($_POST['password'], FILTER_SANITIZE_STRING));

	
	//connessione al database

	define ("MYSQLUSER", "user");
	define ("MYSQLPASS", "password");
	define ("HOSTNAME", "localhost");
	define ("MYSQLDB", "database");
	
	
	//controllo di connessione con database
	
	/*if ($result = $connection->query("SHOW TABLES")) {
	 $count = $result->num_rows;
	 echo "Tables:   ($count)<br />";
	 while ($row = $result->fetch_array()) {
	 echo $row[0]. '<br />';
	 }
	 }*/
	
	
	
	
	
	$connection = new mysqli(HOSTNAME,MYSQLUSER,MYSQLPASS,MYSQLDB);
	if ($connection->connect_error)  {
		die('Errore di connessione: '. $connection->connect_error);
	} else {
		echo 'Connessione riuscita <br />';
		
		//preparaazione query
		$query = "INSERT INTO `utenti` (id_utente, nome, email, username, password) VALUES (NULL, `$namesurname`, `$email`, `$username`, `$password`);";
	
		
		//lancio la query con i messaggi
		if (!$result = $connection->query($query))  {
			echo "Impossibile aggiungere i record <br />";
			var_dump($query);
		}  else {
			echo "Records aggiunti correttamente <br />";
			var_dump($query);
		}
		
		
	}
	
    }
	
?>


Ho fatto tutte le prove possibili (che conosco) e l'unica cosa che mi risulta è che non funzioni il comando INSERT INTO. Se tento di fare INSERT tramite phpmyadmin tutto funziona, da form html no. HELP!
 
Ciao, quale dei due echo ti stampa ?
 
scusa Criric se mi intrometto, forse un problema di apici non idonei
PHP:
$query = "INSERT INTO utenti (id_utente, nome, email, username, password) VALUES (NULL, '$namesurname', '$email', '$username', '$password')";
quelli usati servono per nomi di oggetti database con spazi intermedi, caso che non ricorre
ma forse sbaglio
 
prova a stampare gli errori sql
PHP:
if (!$result = $connection->query($query))  {
            echo "Impossibile aggiungere i record <br />";
            echo "errore sql : " . $connection->error;
        }
 
prova a stampare gli errori sql
PHP:
if (!$result = $connection->query($query))  {
            echo "Impossibile aggiungere i record <br />";
            echo "errore sql : " . $connection->error;
        }




Ho stampato gli errori, riporto l'intero codice per comodità:

PHP:
$connection = new mysqli(HOSTNAME,MYSQLUSER,MYSQLPASS,MYSQLDB);
	if ($connection->connect_error)  {
		die('Errore di connessione: '. $connection->connect_error);
	} else {
		echo 'Connessione riuscita <br />';
		
		//preparaazione query
		$query = "INSERT INTO `utenti` ( `nome`, `email`, `username`, `password`) VALUES (`$namesurname`, `$email`, `$username`, `$password`);";
	
		
		//lancio la query con i messaggi
		if (!$result = $connection->query($query))  {
			echo "Impossibile aggiungere i record <br />";
			echo "errore sql : " . $connection->error;
			var_dump($query);
		}  else {
			echo "Records aggiunti correttamente <br />";
			var_dump($query);
		}
		
		
	}

Ecco il risultato.

Codice:
Connessione riuscita 
Impossibile aggiungere i record 
errore sql : Unknown column 'Paolo' in 'field list'string(120) "INSERT INTO `utenti` ( `nome`, `email`, `username`, `password`) VALUES (`Paolo`, `[email protected]`, `paolino`, `12345`);"
 
Allora ragazzi ho risolto, voleva semplicemente le variabili racchiuse in apici NORMALI e non backtick o escape, come segue:

PHP:
	$connection = new mysqli(HOSTNAME,MYSQLUSER,MYSQLPASS,MYSQLDB);
	if ($connection->connect_error)  {
		die('Errore di connessione: '. $connection->connect_error);
	} else {
		echo 'Connessione riuscita <br />';
		
		//preparaazione query
		
		$query = "INSERT INTO `utenti` ( nome, email, username, password) VALUES ('$namesurname', '$email', '$username', '$password');";
	
	
		//lancio la query con i messaggi
		if (!$result = $connection->query($query))  {
			echo "Impossibile aggiungere i record <br />";
			echo "errore sql : " . $connection->error;
			/*var_dump($query);*/
		}  else {
			echo "Records aggiunti correttamente <br />";
			/*var_dump($query);*/
		}
		
		
	}
 

Discussioni simili