Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    617

    PDO: update non funziona

    Salve, come da titolo avrete capito che stò utilizzando PDO per fare delle query al database. Non sono ancora molto pratico e mi servirebbe un'aiutino a capire perchè questo update al database non funziona:

    codice:
    <?php
    // configuration
    $dbhost     = "localhost";
    $dbname        = "test_2";
    $dbuser        = "root";
    $dbpass        = "";
    
    // database connection
    $conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);
    
    // new data
    $stato_conservazione_new = "SPL (Splendido)";
    $stato_conservazione_old = "SPL (Splendid)";
    
    // query
    $sql = "UPDATE product SET stato_conservazione= ? WHERE stato_conservazione= ?";
    $q = $conn->prepare($sql);
    $q->execute(array($stato_conservazione_new,$stato_conservazione_old));
    
    if($q->rowCount() >= 1) {echo 'success';}
    else  { echo 'update failed'; }
    
    ?>
    Non mi vengono restituiti errori quindi nn riesco a capire dove sbaglio. Potreste cominciare a dirmi se ho scritto bene oppure no?
    Grazie in anticipo!
    Ultima modifica di Madsex; 08-04-2015 a 00:38

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Prova così

    Codice PHP:
    // configuration
    $dbhost     "localhost";
    $dbname        "test_2";
    $dbuser        "root";
    $dbpass        "";

    // database connection
    $conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);

    // new data
    $stato_conservazione_new "SPL (Splendido)";
    $stato_conservazione_old "SPL (Splendid)";

    // query
    $sql "UPDATE product SET stato_conservazione= :new WHERE stato_conservazione= :old";
    $q $conn->prepare($sql);

    $q->bindParam(':new'$stato_conservazione_newPDO::PARAM_STR);
    $q->bindParam(':old'$stato_conservazione_oldPDO::PARAM_STR);

    $q->execute();

    if ( 
    $q->rowCount() >= )
    {
        echo 
    'success';
    }
    else
    {
        echo 
    'update failed'


  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    617
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Prova così

    Codice PHP:
    // configuration
    $dbhost     "localhost";
    $dbname        "test_2";
    $dbuser        "root";
    $dbpass        "";

    // database connection
    $conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);

    // new data
    $stato_conservazione_new "SPL (Splendido)";
    $stato_conservazione_old "SPL (Splendid)";

    // query
    $sql "UPDATE product SET stato_conservazione= :new WHERE stato_conservazione= :old";
    $q $conn->prepare($sql);

    $q->bindParam(':new'$stato_conservazione_newPDO::PARAM_STR);
    $q->bindParam(':old'$stato_conservazione_oldPDO::PARAM_STR);

    $q->execute();

    if ( 
    $q->rowCount() >= )
    {
        echo 
    'success';
    }
    else
    {
        echo 
    'update failed'

    Niente da fare continua ad uscirmi upload failed !Ho anche provato a fare una query semplice con PDO e funziona tranquillamente, nn capisco dove sia il problema.

    Grazie in anticipo !

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Sei sicuro sicuro sicuro che con il valore $stato_conservazione_old ci sia effettivamente un campo da modificare?
    Se ripeti la stessa query senza resettare il db ovviamente l'update lo avrà fatto solo la prima volta e ora non lo farà più perché il valore del campo "stato_conservazione" non è più corrispondente alla variabile $stato_conservazione_old.

    Verifica anche che $stato_conservazione_old contenga effettivamente il valore che ti aspetti

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    617
    ho modificato il codice ( un bel po' alla buona quindi scusa la forma ) in modo tale da valorizzare $stato_conservazione_old esattamente con quello che c'è nel database :

    codice:
    <?php
    // configuration
    $dbhost     = "localhost";
    $dbname        = "test_2";
    $dbuser        = "root";
    $dbpass        = "";
    
    // database connection
    $conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);
    
    $Result = $conn->query('SELECT* FROM product WHERE stato_conservazione = "SPL (Splendid)"');
    foreach( $Result as $row ){
        echo $row['product_id']."<br/>";
    
    $ciao = $row['stato_conservazione'];
    }
    
    // new data
    $stato_conservazione_new = "SPL (Splendido)";
    $stato_conservazione_old = $ciao;
    
    // query
    $sql = "UPDATE product SET stato_conservazione= :new WHERE stato_conservazione= :old";
    $q = $conn->prepare($sql);
    
    $q->bindParam(':new', $stato_conservazione_new, PDO::PARAM_STR);
    $q->bindParam(':old', $stato_conservazione_old, PDO::PARAM_STR);
    
    $q->execute();
    
    if ( $q->rowCount() >= 1 )
    {
        echo 'success';
    }
    else
    {
        echo 'update failed';
    }
    
    ?>
    La prima query funziona ma l'update continua a non andare ! Sono molto confuso !

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    617
    Arcano svelato, scusate !

    In pratica avendo fatto l'export da un computer all'altro di tutta la cartella dei db di xampp non avevo i permessi per modificare le tabelle, grazie e scusate, il primo pensiero è stato che sbagliavo io qualche cosa con PDo !

    Grazie

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.