2012-11-07 60 views
0

我在PHP中有以下代码。我试图将会话变量的登录值传入我的数据库中的SELECT命令。这个?代表会话中创建的登录。 : 通过PDO中的MySQL命令传递PHP会话变量

try {  
    $conn = new PDO(A_DB_HOST, A_DB_USER, A_DB_PASSWORD); 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
} catch (PDOException $e) { 
    echo 'Connection failed: ' . $e->getMessage(); 
} 
$member['login'] = $_SESSION['SESS_login']; 
$qry=$conn->prepare("SELECT * FROM {?}_clients WHERE login=?"); 
$qry->bindParam(1, $_SESSION['SESS_login']); 
$qry->execute(); 

目前,我收到以下错误:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens' in /home/content/14/9957114/html/agent-member-index.php:15 Stack trace: #0 /home/content/14/9957114/html/agent-member-index.php(15): PDOStatement->execute() #1 {main} thrown in /home/content/14/9957114/html/agent-member-index.php on line 15

任何帮助,不胜感激!

+0

第15行是什么? – Rob

+1

第15行:\t'$ qry-> execute();' –

+2

您还需要绑定第二个参数'login =?' – sdespont

回答

2
  1. 不能绑定值,如表名称标识,只是为了
  2. 您在该查询中有两个?占位符,但只绑定一个值。
+0

的问号,您是否有任何建议可以将值传递给表名等标识符? –

+0

简单字符串连接将不得不在那里,即''SELECT * FROM {$ var} _clients ...“'。只要确保价值是值得信赖的。而且你并没有将任意用户提供的值连接到表名中,riiiiiight? :) – deceze