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