Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Problema con script php nell'inserimento dei dati in un database creato con phpMyAdmin

    Buonsalve,


    premetto che sono un dilettante in php e MySQL e che mi sono affacciato a queste due nuove realtà da poco.


    Brevemente ho un problema con il codice nell'allegato

    codice:
    <?php
    
    
    $pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '');
    
    
    $sql = "INSERT INTO users (id, forename, surname, email, password) 
    
    
    VALUES (NULL, 'Nome', 'Cognome', 'email', 'pwd')";
    
    
    if ($pdo->exec($sql) === 1)
    
    
      echo "New record created successfully";
    
    
    ?>

    Ho provato ad inserire in quello che credo sia un database, dei dati tramite questo script che ho salvato nel percorso /htdocs/file_php in quanto uso XAMPP ('file_php' è una sottocartella ulteriore che ho creato). Il problema è che quando vado ad eseguire lo script mi appare una pagina bianca invece della scritta "New record created successfully".


    Facendo vari controlli credo di aver localizzato l'errore alla funzione exec() nella if, il problema è che non so come mai mi dia errore e non credo di aver commesso errori di sintassi.


    Se mi poteste aiutare ve ne sarei grato


    Cordialmente Einstein20
    Ultima modifica di Einstein20; 23-06-2021 a 12:53

  2. #2
    dovresti abilitare gli errori, in questo modo potresti capire meglio dove è il problema. Gli errori si abilitano da php.ini, altrimenti puoi mettere ini_set('display_errors', 1); come prima riga dello script

    non è detto che nel tuo ambiente PHP l'estensione PDO sia abilitata, in caso dovresti verificare con phpinfo(); se PDO è abilitato. Se non lo è, la classe PDO potrebbe non esistere e quindi lo script va in errore sulla prima riga.

  3. #3
    Salve ho controllato e gli errori erano già abilitati, in più l'interfaccia PDO è abilitata e comunque anche inserendo quel comando non viene generato alcun errore, quindi davvero non saprei come mai mi dia errore.

    Cordiali saluti

  4. #4
    nel tuo codice c'è una IF che gestisce solo il caso di successo; nel caso invece che il comando NON sia andato a buon fine, vuol dire che c'è un errore: metti le istruzioni per mostrarlo, così si capisce cos'è.

  5. #5
    fai un debug istruzione per istruzione. ci sono quattro istruzioni, non ci metti molto. dopo $pdo = ... metti

    var_dump($pdo);die();

    ed esegui.

    e così via riga per riga.

    in 4 minuti trovi il problema.

  6. #6
    che poi passare NULL come id potrebbe essere un problema.. hai provato a passare un valore numerico? il campo id di che tipo è nel tuo database? se è auto-increment non null non andrà mai a buon fine quell'istruzione. se non devi passare nulla, puoi omettere il campo nella query.

  7. #7
    Salve non so quando visualizzerete questo messaggio perché ogni volta che provo a pubblicare un commento vengo reindirizzato ad una pagina dove mi viene detto "You have been blocked". Sperando che questo messaggio venga pubblicato farò il resoconto della situazione:

    ho provato l'istruzione:

    var_dump($pdo);die();

    ed il risultato è sempre:

    object(PDO)#1 (0) { }

    Ho attivato gli errori con tutti i consigli che mi avete dato ma erano già attivati e quando eseguo lo script mi appare sempre una pagina bianca.

    Non so se può essere d'aiuto ma gli altri comandi principali: "SELECT,UPDATE,DELETE" vengono tranquillamente eseguiti, solo il comando 'INSERT' non va...

    Ho provato anche togliendo il campo id, perché nel mio database ho messo la spunta sull'opzione 'auto-increment', ciononostante non va...

    Grazie per l'aiuto e cordiali saluti

  8. #8
    ok. il problema è evidentemente la query quindi come ultima riga prova a mettere

    print_r($pdo->errorInfo());

    e vedi che ti dice.

  9. #9
    P.S. prova ad eseguire la stessa quey direttamente sul database, usando il client mysql (se lo usi) oppure phpmyadmin. Già lì dovrebbe darti errore. Prima non funzionava sicuramente per il fatto di inserire NULL sul campo id, ma deve esserci qualche altro problema.

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 © 2021 vBulletin Solutions, Inc. All rights reserved.