【问题标题】:Insert multiple rows with PDO使用 PDO 插入多行
【发布时间】:2015-05-13 15:23:25
【问题描述】:

我在 <form> 标记中有一个多重复选框,如下所示:

<input type="checkbox" name="del[]" value="<?php echo $menuItems['id']; ?>">

我用这个代码询问这个表格:

if (isset($_POST['subgruppe'])) {
        $ids = array();

    foreach ($_POST['del'] as $pval) {
        $ids[] = (int) $pval;
    }

    $ids = implode(',', $ids);
    echo "groupids";
    echo $ids;
    echo "userid:";
    echo $_POST['userid'];

这向我展示了这样的结果:

groupids13,9...userid:5 

我需要一个能给出如下结果的语句:

INSERT INTO user_groups (usergroup, userid) VALUE (13,5),(9,5)

... 你能告诉我如何检查这个吗? 我想我可以处理一个给我的解决方案: (13,5),(9,5)...变成一个变量。

非常感谢:)

【问题讨论】:

  • 你能发一个 $_POST 吗?
  • “发布 $_POST”是什么意思
  • 在发布表单后向我们展示 $_POST 包含的内容。
  • post-content 都是数组中的 groupid 和来自此代码的 userid:

标签: php mysql pdo


【解决方案1】:

您不必为所有INSERTS 构建单个字符串,只需在循环时插入即可。

例如:

$sql = "INSERT INTO user_groups (usergroup, userid) VALUE (:usergroup, :userid)";
$stmt = $pdo->prepare($sql);
foreach ($_POST['del'] as $pval) {
    $stmt->execute(array(':usergroup'=>(int) $pval, 
                         ':userid'=>$_POST['userid']
    ));
}

【讨论】:

  • 致 OP:这里的好处是准备好的语句可以快速使用新参数重新执行。
  • 如何扩展 foreach 语法,如果我想再添加一个数组 :usertag'=>$_POST['usertag']
  • @BobiReshovski 然后$_POST['del'] 需要是一个多维数组
猜你喜欢
  • 2019-07-15
  • 1970-01-01
  • 1970-01-01
  • 2014-08-08
  • 2019-01-12
  • 2013-11-09
  • 1970-01-01
  • 2016-08-02
  • 1970-01-01
相关资源
最近更新 更多