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

SuperRobot Messages postés 30 Statut Membre -  
yg_be Messages postés 24281 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

yg_be Messages postés 24281 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 585
 
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
SuperRobot Messages postés 30 Statut Membre
 
Est-ce sécurisé ?...
0
yg_be Messages postés 24281 Date d'inscription   Statut Contributeur Dernière intervention   1 585 > 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