php - PHP循环遍历数组并执行语句
问题描述
我有这段代码用于使用 PDO 将准备好的值插入 MySQL,但我正在寻找一种方法来用循环整理它,以避免重复:
// PDO connect
$pdo = new PDO($sqldsn, $sqluser, $sqlpass, $sqlopt);
// Prepare query
$stm = $pdo->prepare("$query");
// Cycle through additional values
foreach(func_get_args() as $arg) {
$sqlarray[] = $arg;
}
// Execute query with values
$count = count($sqlarray);
if ($count == "2") { $stm->execute([$sqlarray[1]]); }
if ($count == "3") { $stm->execute([$sqlarray[1], $sqlarray[2]]); }
if ($count == "4") { $stm->execute([$sqlarray[1], $sqlarray[2], $sqlarray[3] ]); }
if ($count == "5") { $stm->execute([$sqlarray[1], $sqlarray[2], $sqlarray[3], $sqlarray[4] ]); }
if ($count == "6") { $stm->execute([$sqlarray[1], $sqlarray[2], $sqlarray[3], $sqlarray[4], $sqlarray[5] ]); }
if ($count == "7") { $stm->execute([$sqlarray[1], $sqlarray[2], $sqlarray[3], $sqlarray[4], $sqlarray[5], $sqlarray[6] ]); }
// Fetch all
$result = $stm->fetchAll();
// Return result
return $result;
我试过这样循环,但我没有得到任何结果(除了数组条目的数量):
for ($i = 1; $i<=$count; $i++){
echo $i;
$stm->execute([$sqlarray[$i]]);
}
我还尝试使用 eval() 构建这些部分,但出于安全原因,这不是一个安全的想法。
我只需要它按照我的代码循环,但不必指定每个可能的准备数量?价值观。任何人都可以帮忙吗?抱歉这个新手问题,但我目前正在学习 PHP。
解决方案
你根本不需要任何循环。
你应该能够只用几行代码就得到你想要的结果;
$pdo = new PDO($sqldsn, $sqluser, $sqlpass, $sqlopt);
// Prepare query
$stm = $pdo->prepare($query);
$arr = array_values(func_get_args()); //gets rid of your foreach loop
array_shift($arr); //gets rid of first element of array
$stm->execute($arr);
return $stm->fetchAll();
推荐阅读
- python - iterator.get_next() 返回字节数组 / iterator.get_next() 不能在没有急切执行的情况下分配给多个值
- javascript - 如何在 PHP 中为动态添加/删除输入字段创建错误处理程序
- javascript - 忽略未声明的变量(TypeScript)
- laravel - 使用 Laravel 5.0 & PHP 5.6 版本开发的项目,尝试在 PHP 7.2 版本中运行时出现错误
- ios - 水平滚动时如何左对齐 UICollectionViewCells?
- xslt - XSLT:按 ID 分组的无序平面 XML 到层次结构
- angular - 无法重置包含选择的反应式表单
- python - 如何在 django-rest-framework 中使用相同的 url conf 调用 CreateApiView 和 ListApiView?
- python - Python:如何在数组中进行条件运算
- scala - 没有结果的类型测试:Option[akka.actor.ActorSystem] 类型的值不能也是 akka.actor.ActorSystem