Je cherche à sélectionner une table définie dans une variable
Malgrès plusieurs essais et recherches, je n'arrive pas à la solution de mon erreure.
$ID_MISSION = $_POST["ID_MISSION"].$_POST['prospects'];
$sql = $bdd->prepare("SELECT * FROM :ID_MISSION ");
$sql->bindValue(':ID_MISSION', $ID_MISSION, PDO::PARAM_STR);
$sql->execute(array($ID_MISSION));
while( $result = $sql->fetch());
if($result)
{
//Exemple 2 : J'ai tenté aussi ceci
$ID_MISSION = $_POST["ID_MISSION"].$_POST['prospects'];
$sql = $bdd->prepare("SELECT * FROM ?");
$sql->execute(array($ID_MISSION));
while( $result = $sql->fetch());
if($result)
{
Ce que je veux
Décrivez ce que vous cherchez à obtenir.
Ce que j'obtiens
Exemple 1 : Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in
Exemple 2 : Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near
Bonjour à tous merci de m'avoir porter votre soutiens.
Du coup cela fonctionne avec cette solution. ".$MA_VARIABLE."
$ID_MISSION = $_POST["ID_MISSION"].$_POST['prospects'];
var_dump($ID_MISSION);
$sql = $bdd->prepare ("SELECT * FROM ".$ID_MISSION."
");
$sql->execute(array($ID_MISSION));
while( $result = $sql->fetch());
if($result)
{
Bonjour,
Il n'est pas possible d'utiliser les méthodes PDO pour faire appel à une table en dynamique. Ni le bindValue
ni le execute(array())
ne répondra à ta problématique.
La seule solution : Concaténer le PHP, à l'ancienne.
$ID_MISSION = $_POST["ID_MISSION"].$_POST['prospects'];
$sql = $bdd->prepare("SELECT * FROM " . $ID_MISSION);
Rien ne t'empêchera évidemment d'utiliser bindValue
au besoin :
$ID_MISSION = $_POST["ID_MISSION"].$_POST['prospects'];
$sql = $bdd->prepare("SELECT * FROM " . $ID_MISSION . " WHERE name = :name");
$sql->bindValue(':name', $name, PDO::PARAM_STR);
Bonjour Azorg, merci pour ton retour.
Je viens de m'essayer avec ceci
$ID_MISSION = $_POST["ID_MISSION"].$_POST['prospects'];
$sql = $bdd->prepare("SELECT * FROM " . $ID_MISSION);
$sql->execute(array($ID_MISSION));
while( $result = $sql->fetch());
if($result)
{
J'ai une erreur Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation
J'ai beau fouiller un peu partout, je ne vois pas de possibilité pour moi.
Pour le coup je te conseillerai de repartir de rien. Tu as des traces dans le code (un execute
avec un ID MISSION en paramètre par exemple qui ne sert plus ici) de tes précédents tests.
N'oublie pas de passer le sujet en résolu.
Bonjour,
Attention quand même aux injections sql avec "$_POST"
que donne un var_dump("$ID_MISION"); juste avant la requête ?
Bonjour Carouge10 le var_dump("$ID_MISSION") me donne bien le nom de la table string(26) "52ici ma nouvelle missions"
il va falloir l'entourer de " car pas d'espace dans les nom de table
c'est à dire que tu as une table par mission ?
Oui je vais avoir une table par mission
$ID_MISSION = $_POST["ID_MISSION"].$_POST['prospects'];
var_dump($ID_MISSION);
$sql = $bdd->prepare ('SELECT * FROM".$ID_MISSION."');
$sql->execute(array($ID_MISSION));
while( $result = $sql->fetch());
if($result)
{
J'ai la même erreure
donc si tu as 1000 missions, alors 1000 tables ? wahou bonjour la maintenance si tu dois ajouter un champs
tu devrais avoir une table pour les missions avec un id pour les différenciés
il manque un espace après le from
et je dis une bêtise mais c'est pas " mais `
$ID_MISSION = $_POST["ID_MISSION"].$_POST['prospects'];
var_dump($ID_MISSION);
$sql = $bdd->prepare ("SELECT * FROM ".$ID_MISSION.'');
$sql->execute(array($ID_MISSION));
while( $result = $sql->fetch());
if($result)
{
J'ai le même souci
c'est juste une rustine et pas une solution à long terme.
passe ton sujet en résolu. merci