Plusieurs requetes SQL à la suite
Posté : 07 déc. 2013, 10:55
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 :
Je ne peux déclarer plusieurs query, exec ou prepare dans mySQL, comment faire au mieux?
Merci!!!!!
Je dois [TRES
Actuellement, et cela fonctionne, je fais comme cela pour successivement réaliser :
- Un query pour CREATE
- Un query pour SELECT
- Un prepare pour INSERT / UPDATE
<?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 :
$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 plus :
$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!!!!!