Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21

Discussione: Consiglio su PDO

  1. #1

    Consiglio su PDO

    Ciao a tutti, mi sono addentrato in PDO e mi sono subito arenato. Se non ho capito male, devo dire addio a tutte le funzioni PHP per parlare col DB perchè sono tutte sostituite dai metodi di PDO...il problema è che se non conosco i metodi che sostituiscono queste funzioni con PDO mi ci faccio il brodo Qualcuno mi sa dire dove trovo una guida in italiano che possa soddisfare questa mia esigenza?
    Grazie!

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Hai provato a cercare "PDO tutorial" su Google, di sicuro ce ne saranno qualche milione.

  3. #3
    Certo, ma sono tutti in inglese...

  4. #4

  5. #5
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Con 'guida pdo' ci sono un pó di siti in italiano.
    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

  6. #6
    Quote Originariamente inviata da Lucciano Visualizza il messaggio
    Già vista, è un po' striminzita, non fa nessun esempio di come posso fare con PDO quello che facevo con mysql_x()

    Grazie Badaze qualcosa ho trovato...mi metto a studiare (caspita manco mi pagassero )

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    539
    ciao, se ti interessa posso postarti il codice che ho sviluppato per me e che uso da diverso tempo ...

  8. #8
    Quote Originariamente inviata da marino51 Visualizza il messaggio
    ciao, se ti interessa posso postarti il codice che ho sviluppato per me e che uso da diverso tempo ...
    Gratis anche la polmonite Grazie Marino posta pure

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    539
    Quote Originariamente inviata da camionistaxcaso Visualizza il messaggio
    Gratis anche la polmonite Grazie Marino posta pure
    Codice PHP:
    <?php
    class TheBestDB {
      private 
    $pdo;
      private 
    $inTransaction false;
      private 
    $dbNAME;
      private 
    $dbUSER;
      private 
    $dbPASS;
      public 
    $sth;
      public 
    $lastInsertId 0;

      function 
    __construct$eDBNAME=""$eDBUSER=""$eDBPASS="" )
      {
        
    $this->dbNAME $eDBNAME;
        
    $this->dbUSER $eDBUSER;
        
    $this->dbPASS $eDBPASS;
    //  $this->MyLog( "" );
    //  $this->MyLog( "main : ".basename ( $_SERVER['PHP_SELF'],".php" ).".php" );
        
    try { $this->pdo = new PDO$this->dbNAME$this->dbUSER$this->dbPASS ); }
        catch ( 
    PDOException $e ) { $this->handle_sql_errors"PDO : OPEN DB"$e ); }
        
    $this->pdo->setAttributePDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION );
        
    $this->OPtransaction false;
      } 
      public function 
    __destruct()
      { 
        
    $this->close(); 
      } 

      public function 
    queryS$sql$params=array() ) // return the retrieved dataset
      
    {
        return 
    $this->BindParams$sql$params )->fetchALLPDO::FETCH_NUM );
      } 

      public function 
    queryM$sql$params=array() ) // return the involved rows counter
      
    {
        return 
    $this->BindParams$sql$params )->rowCount();
      } 

      public function 
    queryC$sql$params=array() ) // return the retrieved element
      
    {
        return 
    current$this->BindParams$sql$params )->fetch() );
      } 

        public function 
    query$sql$params=array() ) // return $sth, the object for subsequent operation
      
    {
        return 
    $this->BindParams$sql$params );
      }

      private function 
    BindParams$sql$params=array() )
      {
        
    $this->MyLog"SQL : ".$this->pdoSqlDebug($sql$params) );
        if ( 
    substr_count$sql"?" ) != count$params ) )
          
    $this->MyErr"ERRORE : incongruenza nei parametri della query -> ".$sql );
        try { 
    $sth $this->pdo->prepare$sql, array( PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL ) );
              foreach( 
    $params as $key => &$param ) { $sth->bindParam$key 1$param ); } 
              
    $sth->execute();
              return 
    $sth; }
        catch( 
    PDOException $e ){ $this->handle_sql_errors$sql$e ); }
      } 

      public function 
    begin_transaction()
      {
        try { 
    $this->pdo->beginTransaction(); $this->OPtransaction true; }
        catch( 
    PDOException $e ){ $this->handle_sql_errors$row$e ); }
        return 
    true;
      } 
      public function 
    commit_transaction()
      {
        try { 
    $this->pdo->commit(); $this->OPtransaction false; }
        catch( 
    PDOException $e ){ $this->handle_sql_errors$row$e ); }
      } 
      public function 
    rollback_transaction()
      {
        try { 
    $this->pdo->rollBack(); $this->OPtransaction false; }
        catch( 
    PDOException $e ){ $this->handle_sql_errors$row$e ); }
      } 
      public function 
    close()
      { 
        unset( 
    $this->pdo ); 
      }
      public function 
    MyLog$text )
      {
        global 
    $swN;
        return;
        
    error_log$swN." ".$text);
      }
      public function 
    MyErr$text )
      {
        global 
    $swN;
        
    error_log$swN." ".$text);
    //  require_once '../includes/mail_SolidError.php';
        
    print "ERRORE INATTESO, contatta l'amministratore del sistema";
        die;
      }
      private function 
    handle_sql_errors$sql$e )
      {
        if ( 
    $this->OPtransaction $this->pdo->rollBack();
        
    error_log"SQL cmd    : ".$sql);
        
    error_log"error code : ".$e->getCode(), );
        
    error_log"error info : ".$e->getMessage(), );
    //  require_once '../includes/mail_SqlFatalError.php';
        
    print "ERRORE INATTESO, contatta l'amministratore del sistema";
        die;
      }
      static public function 
    pdoSqlDebug($raw_sql$parameters)
      {
        
    $keys = array();
        
    $values $parameters;
        foreach (
    $parameters as $key => $value) {
          
    // check if named parameters (':param') or anonymous parameters ('?') are used
          
    if (is_string($key)) {
            
    $keys[] = '/:'.$key.'/';
          } else {
            
    $keys[] = '/[?]/';
          }
          
    // bring parameter into human-readable format
          
    if (is_string($value)) {
            
    $values[$key] = "'" $value "'";
          } elseif (
    is_array($value)) {
            
    $values[$key] = implode(','$value);
          } elseif (
    is_null($value)) {
            
    $values[$key] = 'NULL';
          }
        }
        
    $raw_sql preg_replace($keys$values$raw_sql1$count);
        return 
    $raw_sql;
      }

    ?>

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    539
    il cuore è la funzione "BindParams", tutte le query fanno riferimento a lei
    ci sono delle query specifiche
    "queryS" che utilizzo per le select, restituisce il set trovato
    "queryM" per insert, update e delete, restituisce il numero delle righe coinvolte
    "queryC" restituisce il valore (1 solo) trovato con la select, potrebbe essere "count(*)"
    e poi c'è' "query" generica con cui fare tutto quel che si vuole
    ora ripulisco e ti passo uno script di esempio
    ciao

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.