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

SuperRobot Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23541 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 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
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 26 Date d'inscription   Statut Membre Dernière intervention  
 
Est-ce sécurisé ?...
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > SuperRobot Messages postés 26 Date d'inscription   Statut Membre Dernière intervention  
 
sécurisé contre quoi? quel est le risque si le SELECT se fait attaquer?
as-tu essayé?
0