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
| class Crud {
private $values = [];
private $sql = '';
private $prepare = false;
public function __construct($connexionName) {
$this->connexionName = $connexionName;
// Utilise l'émulation pdo du sgbdd. Permet de se renseigner sur le type attendu par la bdd.
$this->connexionName->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
// Mode exception
$this->connexionName->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
public function insertOne($tableName, $insert=[])
{
$this->values = array_values($insert);
$fields = implode(',',array_keys($insert));
$marqueurs = implode(',',array_fill(0, count($insert), '?'));
$this->sql = "INSERT INTO $tableName ($fields) VALUES ($marqueurs)";
return $this->executeQuery ();
}
public function insertMultiple($tableName, $fields=[])
{
$this->prepare = false;
$marqueurs = implode(',',array_fill(0, count($fields), '?'));
$fields = implode(',',$fields);
try
{
$this->prepare = $this->connexionName->prepare("INSERT INTO $tableName ($fields) VALUES ($marqueurs)");
return $this->prepare;
}
catch (PDOException $e)
{
// message complet en développement
echo $e->getMessage();
}
}
public function countTable($tableName)
{
$this->sql = "SELECT count(*) FROM $tableName";
return $this->executeQuery ();
}
public function selectWhereAnd($tableName, $fields=[], $where=[], $limite=null)
{
$this->values = array_values($where);
$conditions = [];
foreach ($where as $champ => $value) $conditions[] = $champ.' = ?';
$conditions = implode(' AND ', $conditions);
if(is_array($limite) && count($limite) > 0)
{
$this->values = array_merge($this->values,$limite);
$conditions .= ' LIMIT '.implode(',',array_fill(0, count($limite), '?'));
}
$fields = implode(',',$fields);
$this->sql = "SELECT ($fields) FROM $tableName WHERE $conditions";
return $this->executeQuery ();
}
public function executeQuery ($values_user = null)
{
$values = is_array($values_user) ? $values_user : $this->values;
$sql = $this->sql;
// Réinitialise les variables
$this->values = [];
$this->sql = '';
if (count($values) == 0)
{
try
{
$resultat = $this->connexionName->query($sql); // exécution directe
return $resultat;
}
catch (PDOException $e)
{
// message complet en développement
echo $e->getMessage();
}
}
else
{
try
{
$resultat = is_array($values_user) && $this->prepare !== false ? $this->prepare : $this->connexionName->prepare($sql); // requête préparée
if($resultat !== false) $resultat->execute($values); // exécution
return $resultat;
}
catch (PDOException $e)
{
// message complet en développement
echo $e->getMessage();
}
}
}
} |
Partager