Bonjour

Mes scripts étant devenus âgés ceux-ci ont besoin d'être réactualisés. Mon idée passer aux PDO. Après avoir lu plusieurs documents, je me suis lancé. Mon idée mettre les requêtes INSERT et UPDATE sur le même script. J'ai commencé par refaire le script connexion à la BDD

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
<?php
if ( ! function_exists('db_connexion')) {
   function db_connexion() {
 
      static $pdo;
 
      if ( ! ($pdo instanceof PDO)) {
 
         try {
            $pdo = new PDO('mysql:host=monhost;dbname=name;charset=utf8','base', 'passwort', [
            PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_EMULATE_PREPARES   => false
            ]);
         } 
         catch (PDOException $e) {
            throw new InvalidArgumentException('Erreur connexion à la base de données : '.$e->getMessage());
            exit;
         }
      }
 
      return $pdo;
   }
}
return db_connexion();
?>
puis celui pour les requêtes, il y a deux solutions avec ou sans filtre, je ne sais pas bien laquelle serait plus idéale.

Sans filtres
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
<?php
$sql='SELECT *
FROM car_tbl
ORDER BY type, constructeur, modele, mes, exploitant, autres;';
$type=array();
$db = include 'dbbaseconnect.php'; 
try{
   $stmt = $db->prepare($sql);
    $type='';
   $constructeur='';
   $modeles='';
   $mes='';
   $exploitant='';
   $autres='';
   $id_superieur_a=0;
   while($row= $stmt->fetch(PDO::FETCH_ASSOC)){
      $type[]=$row;
   }
   unset($db);
   //$data est complet
   if(count($type)>0){
      echo '<pre>';
      print_r($type);
      echo '</pre>';
   }
   else{
      echo 'Aucun resultat pour cette requete';
   }
} 
catch (Exception $e) {
   print "Erreur ! " . $e->getMessage() . "<br/>";
}
?>
avec filtre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$sql='INSERT INTO car_tbl (id, type, constructeur, modele, mes, exploitant) VALUES (NULL, ?, ?, ?, ?, ?)';
$db = include 'db_mysql.php';
try { 
   $stmt = $db->prepare($sql);
   $type='';
   $constructeur='';
   $models='';
   $mes='';
   $exploitant='';
   $autres='';
   $stmt->execute(array($type,$constructeur,$modeles,$mes,$exploitant,$autres)) ;
   $nb_insert = $stmt->rowCount();
   echo $nb_insert.' insertion effectuée<br/>';
   unset($db);
} 
catch (Exception $e) {
   print "Erreur ! " . $e->getMessage() . "<br/>";
}
Sur le même script, j'aimerais mettre aussi la requête UPDATE, voici le code qui a été placé en dessous de l'INSERT

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$sql='UPDATE contact SET = ? WHERE car_tbl.type = ?;';
$db = include 'db_mysql.php';
try { 
   $stmt = $db->prepare($sql);
   $modeles='';
   $type=0;
   $stmt->execute(array($mail,$id)) ;
   $nb_update = $stmt->rowCount();
   echo $nb_update.' modif effectuée<br/>';
   unset($db);
} catch (Exception $e) {
   print "Erreur ! " . $e->getMessage() . "<br/>";
}
?>
Pouvez me dire si le choix faire un script avec les deux requêtes est possible, ainsi que mes codes ont-ils beaucoup d'erreurs ?

merci d'avance