Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606

    [PDO] insert che non inserisce e non da errori

    Ciao,
    sto impazzendo ormai da giorni su una, apparentemente, semplice funzione che al passaggio di alcuni parametri dovrebbe registrare i dati su un database.
    La funzione è questa:
    Codice PHP:
    function salvataggio($dati) { 
            try { 
                include_once 
    '../bin/connessione.php'
                
    $dbh connetti(); 
                
    $querySQL 'INSERT INTO pagina '
                
    $querySQL .= '(nome, visibile, creata, titolo_pagina, titolo_header, occhiello_header) '
                
    $querySQL .= "VALUES (:nome, :visibile, :creata, :titolo_pagina, :titolo_header, :occhiello_header)"
                
    $sth $dbh->prepare($querySQL); 
                    echo 
    '<pre>'var_dump($sth$dati); echo '</pre>'
                
    $sth->bindValue(':nome'$dati['nuova_nome_pagina'], PDO::PARAM_STR); 
                
    $sth->bindValue(':visibile'$dati['nuova_visibilita'], PDO::PARAM_INT); 
                
    $sth->bindValue(':creata'$dati['nuova_creata']); 
                
    $sth->bindValue(':titolo_pagina'$dati['nuova_titolo_pagina'], PDO::PARAM_STR); 
                
    $sth->bindValue(':titolo_header'$dati['nuova_titolo_header'], PDO::PARAM_STR); 
                
    $sth->bindValue(':occhiello_header'$dati['nuova_occhiello_header'], PDO::PARAM_STR); 
                if (!
    $sth->execute()) { 
                    echo 
    "PDO Error 1.1:\n"
                    
    print_r($sth->errorInfo()); 
                    exit; 
                } else { 
                    echo 
    'Registrazione avvenuta con successo!'
                } 
                unset(
    $sth$dati$dbh); 
            } 
            catch (
    PDOException $e) {echo $e->getMessage();} 
            catch (
    Exception $e) {echo $e->getMessage();} 
        }    
    //    salvataggio() 
    quindi: la variabile $dati è un array che contiene i valori da inserire e viene passata dal form che serve a inserire i dati.
    Come si vede nella funzione c'è anche un var_dump() che mostra sia la query che i valori passati e infatti il risultato è questo:
    object(PDOStatement)#2 (1) {
    ["queryString"]=>
    string(177) "INSERT INTO pagina (nome, visibile, creata, titolo_pagina, titolo_header, occhiello_header) VALUES (:nome, :visibile, :creata, :titolo_pagina, :titolo_header, cchiello_header)"
    }
    array(6) {
    ["nuova_nome_pagina"]=>
    string(5) "frfdf"
    ["nuova_visibilita"]=>
    int(1)
    ["nuova_creata"]=>
    string(10) "2014-10-22"
    ["nuova_titolo_pagina"]=>
    string(7) "fdasfaf"
    ["nuova_titolo_header"]=>
    string(7) "asdfsdf"
    ["nuova_occhiello_header"]=>
    string(6) "dsafdf"
    }

    Registrazione avvenuta con successo!

    ( l'icona che si vede ovviamente è un problema del forum e non dello script )
    Dunque la funzione non torna nessun errore, e la "Registrazione avvenuta con successo!" non avviene affatto, il database non ha record.
    Io francamente sto per arruolarmi nella legione straniera

  2. #2
    Che database usi?

    qual è il codice di connetti() ?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    Quote Originariamente inviata da Santino83_02 Visualizza il messaggio
    Che database usi?
    MySQL 5.5

    qual è il codice di connetti() ?
    La solita per avere un handle al database, considera che non è l'unica operazione con database che svolgo, prima di arrivare a salvare faccio una select con cui prendo i valori dei record già iscritti e ovviamente l'handle viene passato dalla stessa funzione.
    Il problema qui è che non ho errori di sorta, anzi mi dice che va tutto bene, è la situazione peggiore.

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Hai provato a mettere il var_dump($sth) prima e dopo dell'execute ?
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  5. #5
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Hai provato a mettere il var_dump($sth) prima e dopo dell'execute ?
    Sì da sempre lo stesso risultato che vedi riportato nel primo post.
    Anzi speravo che le variabili passassero i loro valori così da vedere se effettivamente venivano caricati, ma pare che non funzioni così.

  6. #6
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    Io sto davvero pensando di farmi frate e fuggire all'estero
    Ho modificata la query per inviare i dati direttamente senza passare dal bind:
    $querySQL .= "VALUES ('{$dati['nuova_nome_pagina']}', {$dati['nuova_visibilita']}, '{$dati['nuova_creata']}', '{$dati['nuova_titolo_pagina']}', '{$dati['nuova_titolo_header']}', '{$dati['nuova_occhiello_header']}')";
    Il rusltato è:
    O
    object(PDOStatement)#2 (1) {
    ["queryString"]=>
    string(168) "INSERT INTO pagina (nome, visibile, creata, titolo_pagina, titolo_header, occhiello_header) VALUES ('prova', 1, '2014-10-23', 'prova reg', 'provare', 'deve funzionare')"
    }
    array(6) {
    ["nuova_nome_pagina"]=>
    string(5) "prova"
    ["nuova_visibilita"]=>
    int(1)
    ["nuova_creata"]=>
    string(10) "2014-10-23"
    ["nuova_titolo_pagina"]=>
    string(9) "prova reg"
    ["nuova_titolo_header"]=>
    string(7) "provare"
    ["nuova_occhiello_header"]=>
    string(15) "deve funzionare"
    }

    Ma niente nel database non c'è il dato.
    La cosa assurda è che tramite phpmyadmin ho provato a inserire il dato a mano e funziona, quindi dove sta il problema?

  7. #7
    Utente di HTML.it L'avatar di Leoz83
    Registrato dal
    Feb 2004
    residenza
    Brindisi
    Messaggi
    39
    codice:
       include_once '../bin/connessione.php'; 
    Sei sicuro che venga realmente incluso?
    Prova con una path assoluta, oppure prova a agire su connessione.php e vedi cosa ne viene fuori.

  8. #8
    Quote Originariamente inviata da Leoz83 Visualizza il messaggio
    codice:
       include_once '../bin/connessione.php'; 
    Sei sicuro che venga realmente incluso?
    Prova con una path assoluta, oppure prova a agire su connessione.php e vedi cosa ne viene fuori.
    Ho pensato la stessa cosa, ma in caso non trovasse il file dovrebbe dare errore.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  9. #9
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    Quote Originariamente inviata da satifal Visualizza il messaggio
    Ho pensato la stessa cosa, ma in caso non trovasse il file dovrebbe dare errore.
    Se non fosse incluso quanto meno mancherebbe questa stringa "object(PDOStatement)#2 (1) {... " ma c'è inoltre sì se per goduria maxima alla Tafazzi, commetto a posta un errore, questo mi viene prontamente segnalato, quindi funziona.

    Ma, prova e riprova, leggi di qua, canta di la sono riuscito a capire, infatti er comunque colpa del file che contiene la procedura di connessione!
    Infatti c'era questa: $dbh->setAttribute(PDO::ATTR_AUTOCOMMIT, false); l'ho messa a TRUE e tutto ha rifunzionato... stasera si festeggia!

  10. #10
    Quote Originariamente inviata da Marcolino's Visualizza il messaggio
    Infatti c'era questa: $dbh->setAttribute(PDO::ATTR_AUTOCOMMIT, false); l'ho messa a TRUE e tutto ha rifunzionato...


    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.