php array_filter 和 mysql SQLSTATE[HY093] : Invalid parameter number:

标签 php mysql

尚未找到答案,所以询问。

从 html textarea 获取这样的数组

Array
(
    [persons_to_check] => 
One person

Another person
Third person
)

这里有一个空白行(行)。我想删除它。所以

$array_from_textarea01 = 
array_filter( explode("\n", str_replace("\r", "", $_POST['persons_to_check'])) );

然后是mysql

SELECT `Column` FROM `some_table` 
WHERE `AnotherColumn` IN 
('. rtrim(trim(str_repeat ('?,', count($array_from_textarea01))),','). ')

$stmt_select_un->execute( $array_from_textarea01 );

并获取SQLSTATE[HY093]:无效的参数号:参数未定义

$stmt_select_un->execute( array($array_from_textarea01) );

并得到SQLSTATE[HY093]:无效的参数数量:绑定(bind)变量的数量与标记的数量不匹配

如果文本区域中的数组没有空行,则不会出现错误。

Array
(
    [persons_to_check] => 
One person
Another person
Third person
)

如果

也没有错误
foreach ( 
array_filter( explode("\n", str_replace("\r", "", $_POST['persons_to_check'])) ) 
as $val ){ 
$array_from_textarea01[] = trim($val);
}

请问什么解决方案,唯一的解决方案是foreach?为什么没有 foreach 我会收到错误?

最佳答案

不知道这一点,但只是重新创建了这一点,问题出在数组的索引上。当您使用 array_filter() 时,您可能会得到一个稀疏数组,但 execute() 期望值按顺序从 0 开始。

简单的解决方案是使用array_values()...

$stmt_select_un->execute( array_values($array_from_textarea01 ));

关于php array_filter 和 mysql SQLSTATE[HY093] : Invalid parameter number:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58647867/

相关文章:

mysql - 选择没有答案的问题

PHP 好友请求系统无法正常工作

php - 将 mysql 子查询 + group by 转换为 laravel eloquent

php - 如何在 MySQL 数据库中存储 PHP 常量

php - php如何知道wordpress函数

php - MySQL 默认值未按预期工作

php - 具体mysql行到php代码

PHP SPL,值得使用还是原始数组函数更好?

mysql if 语句失败,不知道如何修复

php - 如何在 PHP 中获取变量名?