Mettre des conditions dans une requête mysql avec pdo
Bonjour, je vais commencer par un exemple afin d'expliquer le probleme:
Dans le formulaire les champs avec les variables $var2 et $var3 ne sont pas obligatoire mais si elles existent je doit les insérés dans la base.
Je fait donc 4 conditions, une avec $var2 et $var3, une avec seulement $var2, une avec seulement $var3, et une sans aucune des deux.
Code:
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
|
if (!empty($var2) AND !empty($var3))
{
$req = $bdd->prepare('INSERT INTO table(id, champ1, champ2, champ3)
VALUES("", :var1, :var2, :var3)');
$req->bindValue(':var1', $var1, PDO::PARAM_STR);
$req->bindValue(':var2', $var2, PDO::PARAM_STR);
$req->bindValue(':var3', $var3, PDO::PARAM_STR);
$req->execute();
$req->closeCursor();
}
if (!empty($var2) AND empty($var3))
{
$req = $bdd->prepare('INSERT INTO table(id, champ1, champ2)
VALUES("", :var1, :var2)');
$req->bindValue(':var1', $var1, PDO::PARAM_STR);
$req->bindValue(':var2', $var2, PDO::PARAM_STR);
$req->execute();
$req->closeCursor();
}
if (empty($var2) AND !empty($var3))
{
...
}
if (empty($var2) AND empty($var3))
{
....
} |
C'est super long et répétitif.
Je voudrais avoir quelque chose comme ceci:
Code:
1 2 3 4 5 6 7 8 9
|
$req = $bdd->prepare('INSERT INTO table(id, champ1, champ2, champ3)
VALUES("", :var1, :var2, :var3)');
$req->bindValue(':var1', $var1, PDO::PARAM_STR);
if(!empty($var2)) $req->bindValue(':var2', $var2, PDO::PARAM_STR);
if(!empty($var3)) $req->bindValue(':var3', $var3, PDO::PARAM_STR);
$req->execute();
$req->closeCursor(); |
Avec les bonnes conditions dans la requête qui font apparaitre les champs et les marqueurs nommés s'ils existent.
Il y a t-il une solution ?