为了账号安全,请及时绑定邮箱和手机立即绑定

PHP循环遍历数组并执行语句

PHP循环遍历数组并执行语句

PHP
qq_花开花谢_0 2022-06-17 15:22:51
我有这段代码用于使用 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。
查看完整描述

2 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

你根本不需要任何循环。


你应该能够只用几行代码就得到你想要的结果;


$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();


查看完整回答
反对 回复 2022-06-17
?
Cats萌萌

TA贡献1805条经验 获得超9个赞

您可以删除第一个元素array_shift:


// 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

    $arr   = $sqlarray;  // Make a copy

    $first = array_shift($arr);  // Remove the first element

    $stm->execute($arr);  // Execute query with resulting array


    // Fetch all

    $result = $stm->fetchAll();


    // Return result    

    return $result;


查看完整回答
反对 回复 2022-06-17
  • 2 回答
  • 0 关注
  • 104 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信