1
97

pdo

Les paramètres de configuration $db_url, $db_prefix et $db_debug sont définis dans le fichier includes/db.inc.

  1. global $db_url, $db_prefix, $db_debug;
  2.  
  3. $db_url = 'mysql://username:password@localhost/databasename';
  4. $db_prefix = false;
  5. $db_debug = false;

Pour afficher une trace de toutes les requêtes SQL, mettez le paramètre $db_debug à true et incluez le fichier trace.php de la librairie qui définit la fonction trace. IMPORTANT : Si vous utilisez pdo.php en dehors d'un site web, incluez le fichier dump.php de la librairie et définissez la fonction trace comme un alias de la fonction dump :

require_once 'dump.php';

function trace($var, $label=null) {
    return dump($var, $label);
}
db_connect
SYNOPSIS

db_connect($url)

DESCRIPTION

Le connecteur à une base de données a le format scheme://username:password@localhost/databasename. scheme vaut mysql pour MySQL ou pgsql pour PostgreSQL.

CODE
  1. $db_conn=false;
  2. $db_scheme=false;
  3.  
  4. function db_connect($url, $persistent=true) {
  5.     global $db_conn, $db_scheme;
  6.  
  7.     $url = parse_url($url);
  8.  
  9.     $scheme = $url['scheme'];
  10.     $host = urldecode($url['host']);
  11.     if (isset($url['port'])) {
  12.         $host = $host . ':' . $url['port'];
  13.     }
  14.     $user = urldecode($url['user']);
  15.     $pass = isset($url['pass']) ? urldecode($url['pass']) : '';
  16.     $path = urldecode($url['path']);
  17.     if ($path[0] == '/') {
  18.         $path = substr($path, 1);
  19.     }
  20.  
  21.     $dsn = "$scheme:host=$host;dbname=$path";
  22.     $options = array(PDO::ATTR_PERSISTENT => $persistent ? true : false);
  23.  
  24.     try {
  25.         $db_conn = new PDO($dsn, $user, $pass, $options);
  26.         $db_conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  27.         $db_conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
  28.         $db_conn->exec("SET NAMES 'utf8'");
  29.  
  30.         if ($scheme == 'mysql') {
  31.             $db_conn->exec("SET SQL_MODE='ANSI_QUOTES'");
  32.         }
  33.  
  34.         $db_scheme=$scheme;
  35.     }
  36.     catch (PDOException $e) {
  37.         die($e->getMessage());
  38.     }
  39.  
  40.     return $db_conn;
  41. }

db_connect analyse $url pour en extraire les paramètres de connexion à la BD puis ouvre une connexion persistante avec le serveur et sélectionne la BD demandée. Le dialogue est configuré en UTF8. En cas de problème, db_connect récupère l'erreur MySQL ou PostgreSQL et déclenche une erreur PHP. Notez que $db_conn est une variable globale.

  1. function db_close() {
  2.     global $db_conn;
  3.  
  4.     $db_conn=null;
  5. }
  1. function db_version() {
  2.     global $db_conn;
  3.  
  4.     $r = $db_conn->getAttribute(PDO::ATTR_SERVER_VERSION);
  5.  
  6.     return $r;
  7. }
  1. function db_query($sql) {
  2.     global $db_debug;
  3.     global $db_conn;
  4.  
  5.     if ($db_debug) {
  6.         trace($sql);
  7.     }
  8.  
  9.     try {
  10.         $r = $db_conn->query($sql);
  11.     }
  12.     catch (PDOException $e) {
  13.         die($e->getMessage());
  14.     }
  15.  
  16.     $rows = $r->fetchAll(PDO::FETCH_ASSOC);
  17.  
  18.     if (!$rows) {
  19.         return false;
  20.     }
  21.  
  22.     return $rows;
  23. }

db_query execute la requête $sql et retourne toutes les lignes en réponse dans un tableau ou false si la requête n'a rien retourné.

  1. function db_insert($sql) {
  2.     return _db_sql_exec($sql);
  3. }
  1. function db_update($sql) {
  2.     return _db_sql_exec($sql);
  3. }
  1. function db_delete($sql) {
  2.     return _db_sql_exec($sql);
  3. }
  1. function db_exec($sql) {
  2.     return _db_sql_exec($sql);
  3. }
  1. function db_insert_id($id=null) {
  2.     global $db_conn;
  3.  
  4.     $r = $db_conn->lastInsertId($id);
  5.  
  6.     return $r;
  7. }
  1. function db_sql_arg($s, $escape=true, $optional=false) {
  2.     global $db_conn;
  3.  
  4.     if ($s === NULL or $s === false or $s === '') {
  5.         return $optional ? 'NULL' : "''";
  6.     }
  7.  
  8.     return $escape ? $db_conn->quote($s) : "'$s'";
  9. }
  1. function db_prefix_table($table) {
  2.     global $db_prefix;
  3.  
  4.     return $db_prefix ? $db_prefix . $table : $table;
  5. }
  1. function _db_sql_exec($sql) {
  2.     global $db_debug;
  3.     global $db_conn;
  4.  
  5.     if ($db_debug) {
  6.         trace($sql);
  7.     }
  8.  
  9.     try {
  10.         $r = $db_conn->exec($sql);
  11.     }
  12.     catch (PDOException $e) {
  13.         die($e->getMessage());
  14.     }
  15.  
  16.     return $r;
  17. }
VOIR AUSSI

register

Commentaires

Votre commentaire :
[p] [b] [i] [u] [s] [quote] [pre] [br] [code] [url] [email] strip aide 2000

Entrez un maximum de 2000 caractères.
Améliorez la présentation de votre texte avec les balises de formatage suivantes :
[p]paragraphe[/p], [b]gras[/b], [i]italique[/i], [u]souligné[/u], [s]barré[/s], [quote]citation[/quote], [pre]tel quel[/pre], [br]à la ligne,
[url]http://www.izend.org[/url], [url=http://www.izend.org]site[/url], [email]izend@izend.org[/email], [email=izend@izend.org]izend[/email],
[code]commande[/code], [code=langage]code source en c, java, php, html, javascript, xml, css, sql, bash, dos, make, etc.[/code].