J'essaie d'utiliser la liaison dans PDO pour sélectionner certaines entrées d'une base de données Microsoft SQL. Le code que j'utilise ressemble à ce que j'ai trouvé dans la documentation. Cependant, quand je le lance, je reçois l'avertissement ci-dessous:PDO et Microsoft SQL: Doit déclarer la variable de table "@ P1"
Attention: PDOStatement :: execute() [pdostatement.execute]: SQLSTATE [42000]: Syntaxe violation d'erreur ou d'accès: 1087 [Microsoft] [SQL Client natif] [SQL Server] Doit déclarer la variable de table "@ P1". (SQLExecute [1087] au poste \ PDO_ODBC \ odbc_stmt.c: 254) dans (chemin de fichier long) sur la ligne 40
Voici le code correspondant:
$table = "[User Site]";
$user = "demo";
$sql = "SELECT * FROM ? WHERE user='?'";
$sth = $db->prepare($sql);
$sth->bindValue(1, $table, PDO::PARAM_STR);
$sth->bindValue(2, $user, PDO::PARAM_STR);
$sth->execute(); // <-- line 40
$data = $sth->fetch(PDO::FETCH_ASSOC);
Cela peut être lié. Lorsque je tente d'utiliser des marqueurs de paramètres nommés (: table,: l'utilisateur) au lieu de points d'interrogation, je reçois ceci:
Attention: PDOStatement :: bindValue() [pdostatement.bindvalue]: SQLSTATE [HY093]: non valide numéro de paramètre: le paramètre n'a pas été défini dans (chemin de fichier long) à la ligne 39
Pourquoi n'aime-t-il pas mon instruction préparée?