Pourquoi mon programme ne trouves pas la table dans la BDD ?

SuperRobot Messages postés 30 Statut Membre -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour, j'ai un petit bout de programme qui permet de détecter si une table existes dans la BDD.
J'aimerais savoir pourquoi même quand une table existes, ce programme me dit que cette table n'existes pas.
Peut-être que c'est à cause des back quotes autour du "?" mais si je ne mets pas ces back quotes et que la table contient des caractères comme "-", ça ne marchera pas...

$db = new PDO('mysql:host=localhost;dbname=files_v3', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
    try
    {
        $test_req = $db->prepare('SELECT COUNT(ID) AS test_req FROM `files_v3`.`?`');
        $test_req->execute(array($file_name));
        echo 'yes';
    }
    catch(Exception $e)
    {
        if(strpos($e, 'PDOException: SQLSTATE[42S02]') === 0)
        {
            echo 'no';
        }
        echo $e;
    }


Cordialement.

1 réponse

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour, je ne pense pas que tu puisses ainsi faire varier le nom de la table dans une requête préparée.
    moi j'essaierais
    $sql = "SELECT COUNT(*) FROM " . $file_name ;
    $reponse = $db->query($sql);
    if ($reponse)
        echo "la table existe";
    else
        echo "oups";
    0
    1. SuperRobot Messages postés 30 Statut Membre
       
      Est-ce sécurisé ?...
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > SuperRobot Messages postés 30 Statut Membre
         
        sécurisé contre quoi? quel est le risque si le SELECT se fait attaquer?
        as-tu essayé?
        0