- Home
- Categorie
- Coding e Sistemistica
- PHP
- mancato inserimento dati dopo INSERT INTO
-
Prova a racchiudere i nomi delle variabili .$variabile. tra parentesi graffe .{$variabile}.
E poi per curiosità, per quale motivo metti quei punti?
-
Ciao Akeeron,
innanzitutto grazie per la risposta e scusami se ti rispondo solo ora, ma non ho avuto tempo di metterci mano.
Ho inserito le parentesi graffe, come da te consigliato, ma il risultato è lo stesso, praticamente tutto ok, ma non scrive nulla all'interno della tabella.
Sto uscendo matto!
Quali punti ti riferisci??
C'è qualcuno che può gentilmente darmi una mano e capire dove è l'errore?
grazie
-
Innanzitutto, ti consiglio questa soluzione, perché più pratica:
[PHP]
$query = <<<SQL
INSERT INTO anagraficaclienti (ragione_sociale, via, citta, provincia, cap, stato, partita_iva, codice_fiscale, telefono)
VALUES( "{$value1}", "{$value2}", "{$value3}" );
SQL;
[/PHP]E adesso ti spiego perché non funziona nel tuo metodo:
[PHP]$query="INSERT INTO anagraficaclienti (ragione_sociale, via, citta, provincia, cap, stato, partita_iva, codice_fiscale, telefono)";
$query.=" VALUES ('".$ragione_sociale."', '".$via."', '".$citta."', '".$provincia."', '".$cap."', '".$stato."', '".$partita_iva."', '".$codice_fiscale."', '".$telefono."')";
[/PHP]Tu hai scritto:
[PHP]$query .=" VALUES ("[/PHP]
e rimettendo le doppie virgolette senza escape dopo VALUES (, è normale che ti si interrompa la stringa.
Inoltre, hai incasinato l'ordine delle virgolette, singole e doppie.Se proprio volessi utilizzare il tuo metodo, effettua l'escape delle doppie virgolette con "
Spero di essere stato chiaro...PS: Ma c'è un motivo per cui tu inserisci un campo
".roma."
nel database?
-
Ciao e grazie per la celere risposta.
Ho fatto come consigliato, ma il risultato è sempre lo stesso.
Allego il file insert.php
<?php
include ("conn.php")?>
<?php
$ragione_sociale = $_POST['ragione_sociale'];
$via = $_POST['via'];
$citta = $_POST['citta'];
$provincia = $_POST['provincia'];
$cap = $_POST['cap'];
$stato = $_POST['stato'];
$partita_iva = $_POST['partita_iva'];
$codice_fiscale = $_POST['codice_fiscale'];
$telefono = $_POST['telefono'];$query= <<<SQL
INSERT INTO anagraficaclienti (ragione_sociale, via, citta, provincia, cap, stato, partita_iva, codice_fiscale, telefono)
VALUES ("{$ragione_sociale}", "{$via}", "{$citta}", "{$provincia}", "{$cap}", "{$stato}", "{$partita_iva}", "{$codice_fiscale}", "{$telefono}");
SQL;mysqli_query($conn, $query);
echo 'ok';
?>
<?php include ("close.php"); ?>PS: Non vedo a nessuna parte il campo ".roma."
grazie
-
Ok, adesso la sintassi è chiara, e appurato che il problema non risiede nel codice, ti insegno un trucco.
Al posto di echo "ok"; metticiecho $query;
Lancia la pagina, copia la query stampata dall'echo, vai su phpmyadmin, ed esegui direttamente da lì quella query.
Quando ti restituirà l'errore user friendly, saprai dove andare a cercare
-
Ciao,
grazie mille.
Ho provato a fare ciò che hai scritto e spero di non aver sbagliato....
Mi esce il seguente errore:#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 '$query' at line 1
grazie
-
Pagina insert.php
[PHP]<?php
include ("conn.php");$ragione_sociale = $_POST['ragione_sociale'];
$via = $_POST['via'];
$citta = $_POST['citta'];
$provincia = $_POST['provincia'];
$cap = $_POST['cap'];
$stato = $_POST['stato'];
$partita_iva = $_POST['partita_iva'];
$codice_fiscale = $_POST['codice_fiscale'];
$telefono = $_POST['telefono'];$query= <<<SQL
INSERT INTO anagraficaclienti (ragione_sociale, via, citta, provincia, cap, stato, partita_iva, codice_fiscale, telefono)
VALUES ("{$ragione_sociale}", "{$via}", "{$citta}", "{$provincia}", "{$cap}", "{$stato}", "{$partita_iva}", "{$codice_fiscale}", "{$telefono}");
SQL;mysqli_query($conn, $query);
echo $query;include ("close.php");
?>[/PHP]- Lancia la pagina insert.php ( ovviamente tramite form, altrimenti non avremmo i dati nel $_POST ), DEVE mostrarti in output la query.
- Torna su phpmyadmin ed incolla la query in output dalla pagina insert.php
Riprova a seguire questi passi, poi posta il messaggio d'errore.
-
ciao e grazie, di seguito lo screen
INSERT INTO anagraficaclienti (ragione_sociale, via, citta, provincia, cap, stato, partita_iva, codice_fiscale, telefono) VALUES ("azienda", "roma", "roma", "rm", "00100", "ita", "00000001", "00000001", "404030202")grazie
-
Esegui questa query su phpmyadmin e vedi l'errore che ti restituisce...
-
ciao lo screen inserito viene da phpmyadmin e mi scrive "MySQL ha restituito un insieme vuoto (i.e. zero righe). (La query ha impiegato 0.0817 sec)"
-
Non ho visto nessuno screen sfortunatamente, ma se ti dice che ha restituito un insieme vuoto la query funziona. Sei sicuro che il problema del mancato inserimento dati persista?
-
ciao, praticamente solo se inserisco la query io manualmente da phpmyadmin allora funziona e memorizza il record, altrimenti non fa nulla.
non so che pesci pigliare è davvero stranograzie mille
-
A questo punto, sei sicuro che il file conn.php stabilisca una vera connessione al DB? E che non abbia errori al suo interno? Di solito se la query funziona il problema risiede nella connessione tra PHP e MySQL.
Se anche la connessione dovesse funzionare, non so proprio come aiutarti, mi spiace!Saluti
-
ciao,
penso di si è questo<?php
$conn=mysqli_connect("localhost", "root", "password");
if (!$conn)
{
die ("connessione al database non riuscita! ".mysqli_error());
}
?>ti ringrazio del tuo aiuto ma non capisco manco io.
-
Manca il nome del database.
[PHP]$db_connection = mysqli_connect("host","user","password","database");[/PHP]
Come vedi, il costruttore richiede quattro parametri, te ne fornisci tre, per forza non funziona la query.Saluti
-
grazie mille, ho provato ora e funziona perfettamente.
mi spiace averti fatto impazzire per una "cavolata".
il php lo sto imparando.
grazie ancora.
-
Di nulla, lieto d'esserti stato d'aiuto. Tieni a mente quel "trucchetto" che ti ho illustrato in questo topic, può essere utile se avrai problemi di query in futuro.
-
Perfetto, grazie mille ancora!
-
Buongiorno ragazzi, sempre in rif. ai due files php inseriti, come posso verificare che per esempio se nel db è presente un campo come la partita iva non si reinserisca un nuovo record che lo duplica?
Ho provato ad inserire un ciclo if prima dell'istruzione, ma non mi funziona.
Grazie mille
-
Scusate ma ho risolto, lascio la soluzione
$control = mysql_query("SELECT campo FROM iscritti WHERE campo= '$campotabella'");
$countuser = mysql_num_rows($control);if ($countuser > 0) {
echo "già iscritto";
}
else
{#prosegue inserimento perchè non iscritto}grazie lo stesso