1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
| <?php
declare(strict_types=1);
namespace vendor\util;
/**
* TUTORIAL DVP SUR LE CONCEPT MVC : MODÈLE-VUE-CONTRÔLEUR
* @link https://www.developpez.net/forums/blogs/32058-rawsrc/b7786/developpement-selon-l-approche-mvc-modele-vue-controleur-retour-theorie/
* @link https://www.developpez.net/forums/blogs/32058-rawsrc/b7804/developpement-selon-lapproche-mvc-modele-vue-controleur-cas-pratique/
*/
class MYPDO
extends \PDO
{
/**
* @var \PDO
*/
private static $pdo = null;
public function __construct()
{
if (self::$pdo === null) {
self::connect();
}
return self::$pdo;
}
/**
* @param string scheme Ex: mysql pgsql...
* @param string $host Adresse IP du serveur
* @param string $database Nom de la base de données
* @param string $user Nom de l'utilisateur
* @param string $pwd Mot de passe de la connexion
* @param string $port Numéro du port pour la connexion
*/
private static function connect(string $scheme = DB_SCHEME, string $host = DB_HOST, string $database = DB_NAME,
string $user = DB_USER, string $pwd = DB_PWD, string $port = DB_PORT)
{
$dsn = "{$scheme}:host={$host};dbname={$database};";
if ((int)($port)) {
$dsn .= "port={$port};";
}
try {
self::$pdo = new \PDO($dsn, $user, $pwd, [
\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
\PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
\PDO::ATTR_EMULATE_PREPARES => false,
\PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
]);
} catch (\PDOException $e) {
throw $e;
}
}
/**
* @param mixed $sql
* @param mixed $values [:tag => value]
* @param mixed $types [:tag => PDO::PARAM_XXX] si tag absent alors PDO::PARAM_STR
* @return array null si erreur
*/
public function select($sql, array $values, array $type = []): ?array
{//echo "mypdo 63 sql=".$sql."<br/>";
try {
$stmt = self::$pdo->prepare($sql);
foreach ($values as $tag => $v) {
$stmt->bindValue($tag, $v, $type[$tag] ?? \PDO::PARAM_STR);
}
$exec = $stmt->execute();
//var_dump($stmt);
return $stmt->fetchAll(\PDO::FETCH_ASSOC);
} catch (\PDOException $e) {
error_log('PDO::select - '.$e->getmessage());
return null;
}
}
public function insert($sql, array $values, array $type = []):bool
{
try {
$stmt = self::$pdo->prepare($sql);
foreach ($values as $tag => $v) {
$stmt->bindValue($tag, $v, $type[$tag] ?? \PDO::PARAM_STR);
}
$exec = $stmt->execute();
//var_dump($stmt);
return true;
} catch (\PDOException $e) {
error_log('PDO::select - '.$e->getmessage());
return false;
}
}
public function insertMultipleValues(string $table_name, string $list_colons, array $values):bool
{
try {
$list_values=" VALUES (";
foreach ($values as $val_bdd)
{
//$sup_str="(".$val_bdd."),";
$list_values.=$val_bdd.",";
}
$ln=strlen($list_values);
$list_values=substr($list_values,0, -1);
$list_values.=")";
$deb_req="INSERT INTO `".$table_name."` ";
$sql=$deb_req.$list_colons.$list_values;
$stmt = self::$pdo->prepare($sql);
$exec = $stmt->execute();
return true;
} catch (\PDOException $e) {
error_log('PDO::select - '.$e->getmessage());
return false;
}
}
} //end class MYPDO |
Partager