我有一个mysql select查询语句,如使用php,
$rrt = implode(',',array_fill(0,count($ees),'?'));
$rrr = implode(',',array_fill(0,count($array),'?'));
$select = $con ->prepare("SELECT name from table WHERE name NOT IN ($array) AND ageNOT IN ($rrt) GROUP BY name ");我试过:
$select = $con ->prepare("SELECT name from table WHERE name NOT IN ($rrr) AND age NOT IN ($rrt) GROUP BY name ");
$select->($array);误差输出
致命错误: Uncaught : SQLSTATEHY093:无效参数号:绑定变量数与
$select = $con ->prepare("SELECT name from table WHERE name NOT IN ($array) AND age NOT IN ($rrt) GROUP BY name ");
$select -> bindParam(1,$array);
$select -> bindParam(2,$ees);
$select -> execute();误差输出
致命错误: Uncaught : SQLSTATEHY093:无效参数号:绑定变量数与
$select = $con ->prepare("SELECT name from table WHERE name NOT IN ('".implode('","',$array)."') AND ageNOT IN ($rrt) GROUP BY name ");
$select -> execute($ees);这一次给出了一些结果,但不是我想要的;我想使用这样的查询:
$select = $con ->prepare("SELECT name from table WHERE name NOT IN ($array) AND age NOT IN ($rrt) GROUP BY name ");
$select -> execute($ees);但是我不想得到参数绑定错误的数目,请帮助!提前谢谢。
发布于 2018-06-26 10:21:54
这应该是可行的:
$rrr = implode(',',array_fill(0,count($array),'?'));
$rrt = implode(',',array_fill(0,count($ees),'?'));
$select = $con ->prepare("SELECT name from table WHERE name NOT IN ($rrr) AND age NOT IN ($rrt) GROUP BY name ");
$index = 1;
foreach($array as $key => $value) {
$select -> bindParam($index++,$array[$key]);
}
foreach($ees as $key => $value) {
$select -> bindParam($index++,$ees[$key]);
}
$select -> execute();注bindParam需要一个变量引用。
发布于 2018-06-26 10:27:20
假设您使用的是PDO,那么只有两种方法可以将值传递给参数化查询:
在前一种情况下,你要么用问号的位置约束(为了?)样式参数),或按参数名称(用于命名参数)
在这两种情况下,只能将一个变量绑定到一个参数。不能用bindParam绑定整个数组(尽管可以绑定数组中的单个条目)。
若要将数组传递到execute中,则它必须是具有与有问号相同数目的索引数组(用于?样式),或者它必须是一个具有与命名占位符匹配的键的数组(用于命名参数样式)。同样,每个占位符只能绑定一个条目。
您似乎要做的是将两个数组绑定到同一个查询。你不能这么做。不过你也有其他选择。
https://stackoverflow.com/questions/51039942
复制相似问题