2012-11-07 93 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