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)
执行语句getSQLSTATE[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);