Bonjour!

Je dois [TRES] mal faire car je suis obligé d'user d'imagination pour faire plusieurs requetes à la suite.
Actuellement, et cela fonctionne, je fais comme cela pour successivement réaliser :
  1. Un query pour CREATE
  2. Un query pour SELECT
  3. Un prepare pour INSERT / UPDATE

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
 
<?php  
$date = date("Ymd");
$heure = date("His");
 
$pdo = new PDO('mysql:host=localhost;dbname=MABASE', 'MONUSER', 'MONPASSWORD');
$pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(\PDO::ATTR_DEFAULT_FETCH_MODE, \PDO::FETCH_OBJ);
$pdo->setAttribute(\PDO::ATTR_EMULATE_PREPARES, false);
$pdo->setAttribute(\PDO::ATTR_CASE, \PDO::CASE_LOWER);
 
        $pdo->query("CREATE TABLE IF NOT EXISTS `$resultat2->subid` (date DATE, heure TIME, prod INT, PRIMARY KEY(date, heure));");
 
          $prodmax=$pdo->query('SELECT prod FROM `'.$resultat2->subid.'` ORDER BY prod DESC LIMIT 1');
          $prodmax->setFetchMode(PDO::FETCH_OBJ);
          $valeurprodmax = $prodmax->fetch();
 
            if ($texte[1] >= $valeurprodmax->prod)
              {
                $stmt = $pdo->prepare('INSERT INTO `' . $resultat2->subid . '` (date, heure, prod) VALUES (str_to_date('.$date.',\'%Y%m%d\'), '.$heure.', '.$texte[1].') ON DUPLICATE KEY UPDATE date = VALUES(date), heure = VALUES(heure), prod = VALUES(prod)');    
                $stmt->execute();
              }            
?>
Je souhaite rajouter un DELETE dans le prepare (ou ailleurs du moment que ce soit faire avant le INSERT/UPDATE), j'ai lu quelque part qu'on pouvait mettre plusieurs requetes du moment qu'on les sépare avec ; ou \ ce qui doit être finalement faux car cela ne fonctionne pas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
$stmt = $pdo->prepare('DELETE FROM '.$resultat2->subid.' WHERE date = str_to_date('.$date.',\'%Y%m%d\'); INSERT INTO `' . $resultat2->subid . '` (date, heure, prod) VALUES (str_to_date('.$date.',\'%Y%m%d\'), '.$heure.', '.$texte[1].') ON DUPLICATE KEY UPDATE date = VALUES(date), heure = VALUES(heure), prod = VALUES(prod)');    
$stmt->execute();
Tout comme rajouter dans le prepare ne fonctionne pas:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
$stmt = $pdo->prepare('DELETE FROM '.$resultat2->subid.' WHERE date = str_to_date('.$date.',\'%Y%m%d\')'); 
$stmt = $pdo->prepare('INSERT INTO `' . $resultat2->subid . '` (date, heure, prod) VALUES (str_to_date('.$date.',\'%Y%m%d\'), '.$heure.', '.$texte[1].') ON DUPLICATE KEY UPDATE date = VALUES(date), heure = VALUES(heure), prod = VALUES(prod)');    
$stmt->execute();
PS : Il est normal que je fasse un DELETE avec INSERT/UPDATE car ayant des clés composées, je peux avoir plusieurs enregistrement au même jour mais pas à la même heure. Je veux supprimer tout enregistrement du jour précis avant d’insérer par cette méthode.

Je ne peux déclarer plusieurs query, exec ou prepare dans mySQL, comment faire au mieux?

Merci!!!!!