• User

    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?


  • User

    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


  • User

    Ok, adesso la sintassi è chiara, e appurato che il problema non risiede nel codice, ti insegno un trucco.
    Al posto di echo "ok"; mettici

    echo $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 😉


  • User

    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


  • User

    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.


  • User

    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


  • User

    Esegui questa query su phpmyadmin e vedi l'errore che ti restituisce...


  • User

    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)"


  • User

    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?


  • User

    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 strano

    grazie mille


  • User

    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


  • User

    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.


  • User

    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


  • User

    grazie mille, ho provato ora e funziona perfettamente.
    mi spiace averti fatto impazzire per una "cavolata".
    il php lo sto imparando.
    grazie ancora.


  • User

    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.


  • User

    Perfetto, grazie mille ancora!


  • User

    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


  • User

    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