MySQL REGEXP with?占位符如何绑定php变量

MySQL REGEXP with?占位符如何绑定php变量,php,mysql,Php,Mysql,这是没有? $query_select_all = "SELECT * FROM TableName WHERE CAST(ColumnName AS UNSIGNED) REGEXP '111|114|115'"; $sql = $db->prepare($query_select_all); $sql->execute(); 想要使用'111 | 114 | 115'作为php变量(例如$data) 将代码更改为 $data = array('111|', '114|', '1

这是没有

$query_select_all = "SELECT * FROM TableName WHERE CAST(ColumnName AS UNSIGNED) REGEXP '111|114|115'";
$sql = $db->prepare($query_select_all);
$sql->execute();
想要使用
'111 | 114 | 115'
作为php变量(例如
$data

将代码更改为

$data = array('111|', '114|', '115');
$query_select_all = "SELECT * FROM TableName WHERE CAST(ColumnName AS UNSIGNED) REGEXP (?,?,?)";
$sql = $db->prepare($query_select_all);
$sql->execute($data);
$data
看起来像
数组([0]=>111 |[1]=>114 |[2]=>115)

执行语句get
SQLSTATE[21000]后:基数冲突:1241操作数应包含1列

假设
$data=array('111 |'、'114 |'、'115')有不正确的地方


什么是正确的代码?

这意味着REGEXP只需要一个占位符,但您要给它三个占位符

更改此项:

$sql->execute($data);
致:


您为regexp提供了3个参数,但它应该只有一个:

... REGEXP (?,?,?)";
所以你最终得到了这样的结果:

... REGEXP ('111|','114|','115')";
此外,您可以这样做,而不是向某些数组元素添加
|
字符:

$res = implode('|', $arr);

然后在SQL查询中只使用一个参数绑定。

请打印整个查询。
$query\u select\u all\u start
包含什么内容?请稍候。。。会有变化吗
$res = implode('|', $arr);