Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    286

    [PDO] Prepared statements o Transaction?

    Premetto che ho sempre usato Prepared statements e mai le transaction, la domanda è:
    In quale situazione è meglio usare l'uno o l'altro sistema?....e perchè??

    TRANSSACTION
    1. Begin transaction.
    2. query
    3. Commit transaction.
    4. altrimenti roolback

    PREPARED STATEMENT
    1. prepare (query)
    2. Execute

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    286
    ....nemmeno una considerazione personanle????

  3. #3
    Utente di HTML.it L'avatar di garlick
    Registrato dal
    Dec 2001
    Messaggi
    385
    Le Prepared Statements vengono utilizzateper ottimizzare l'esecuzione ripetuta di query aventi struttura simile. Esempio: se devo inserire n volte dei prodotti in un db, la query avrà sempre la stessa struttura (INSERT INTO blabla), quindi al DBMS conviene prepararsi ad eseguire quella query una volta per tutte, in modo da ottimizzarne i tempi sapendo che dovrà ripetere quella operazione molte volte.

    Le Transaction (transazioni) sono invece utilizzate per implementare a livello logico delle operazioni che devono essere eseguite atomicamente. Se le operazioni che compongono la transazione venissero eseguite solo parzialmente, potrebbero generare dati inconsistenti.
    Esempio: devo aumentare il conto corrente di un utente di 10 e poi prelevare 5; se la prima query andasse a buon fine ma la seconda no (per qualche malfunzionamento o errore interno), avrei dati che non rispecchiano la situazione che vorrei avere. Se una operazione compresa nella transazione non va a buon fine, l'intera transazione viene "annullata", eseguendo un'operazione detta "rollback" che riporta tutti i dati allo stato precedente. In questo modo l'operazione di aggiunta e prelievo vengono considerate inscindibili e "non interrompibili".
    Le transazioni sono poi usate anche per risolvere problemi di mutua esclusione sulla lettura e scrittura di dati.
    Dal punto di vista teorico le transazioni vengono descritte attraverso delle proprietà dette ACID (dal nome delle iniziali dei termini).

    Quindi ti puoi accorgere da solo che vengono utilizzate per scenari molto diversi.

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    286
    grazie mille, ora molte cose sono + chiare!
    Le prepared statement possono essere usate pure con le query SELECT?

    Una cosa del genere avrebbe senso??

    $sql = prepare("SELECT * FROM myTable");
    $sql = execute();
    while($a = $sql->fetch()){
    var_dump($a);
    }

    In verità, prima di postare ho fatto delle prove e purtroppo con il sistema sopra descritto quello che ottengo è solo un loop infinito della prima riga. Il sistema sotto invece funziona, però vorrei evitare di caricare tutte le righe su un array.

    $sql = prepare("SELECT * FROM myTable");
    $sql = execute();
    foreach($sql->fetchAll() as $a)
    var_dump($a);
    }

    Grazie per l'aiuto

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.