0
我試圖從數據庫中獲取的查詢,但是,我有bindParam
(:name)
值不被束縛的問題,當我回聲$sql
和print_r($stmtTwo)
的WHERE
條款規定WHERE :name
,而不是從字符串$wherefinal
。與PDO bindParam /值
我的代碼是:
$sql= "SELECT Species.Species_ID
FROM Species
JOIN (
SELECT Species.Species_ID, COUNT(*) AS mynum
FROM Species_Opt LEFT JOIN Species ON (Species.Species_ID = Species_Opt.SO_Species_ID)
WHERE :name
GROUP BY SO_Species_ID HAVING mynum = 6
) AS mytable ON Species.Species_ID = mytable.Species_ID";
$stmtTwo = $pdo->prepare($sql);
$stmtTwo->bindParam(':name', $wherefinal);
$stmtTwo->execute();
與$wherefinal
SQL語句之前被定義,被定義爲:
$where = "";
foreach ($_POST as $k => $v){
$where .= "(Species_Opt.SO_Option_ID = $v) OR ";
};
$wherefinal = substr($where, 0, strrpos($where, " OR "));
而且迴盪的時候,$wherefinal
顯示:
(Species_Opt.SO_Option_ID = 4) OR (Species_Opt.SO_Option_ID = 12) OR (Species_Opt.SO_Option_ID = 17) OR (Species_Opt.SO_Option_ID = 20) OR (Species_Opt.SO_Option_ID = 21) OR (Species_Opt.SO_Option_ID = 32)
$v
來自單選按鈕的值m是通過不同的SQL語句和smarty生成的表單。
簡單,你不能綁定列'WHERE:name' – 2014-12-02 02:37:55
@ Fred-ii-,我相信O P至少知道它不起作用,這就是爲什麼他問,而你的重複鏈接無助於解決他的問題。這個鏈接應該是一個更好的建議:http://stackoverflow.com/questions/920353/can-i-bind-an-array-to-an-in-condition,因爲他的問題可以縮短到'Species_Opt.SO_Option_ID IN (?,?,?,....)' – invisal 2014-12-02 02:46:34
@invisal我已重新打開它,但是如果其他人關閉了[基於您的鏈接](http://stackoverflow.com/q/920353/)的問題,另一個重複,它會超出我的控制。 – 2014-12-02 02:48:38