【问题标题】:PDO insert multiple rows with key and values as arrayPDO 插入多行,键和值作为数组
【发布时间】:2013-02-21 20:30:45
【问题描述】:

我的数组看起来像:

Array
(
    [name] => Array
        (
            [0] => Matrix
            [1] => Ryan 
        )

    [surname] => Array
        (
            [0] => Relaoded
            [1] => Lose
        )

)

我的问题是,键和值与计数不匹配。

如何使用 PDO 将这个数组像精确结构一样插入到 mysql 中?

在mysql表中

    ----------------------------------
   |    id      name      surname    |
   |    1       Matrix    Relaoded   |
   |    2       Ryan      Lose       | 
    ----------------------------------

当然我需要以编程方式的解决方案。

我花了几个小时去这个很棒的论坛,但我找不到解决方案:(

谢谢 ;)

【问题讨论】:

  • "key and value doesn't match the count." - 你是什么意思?
  • INSERT INTO mytable VALUES(?,?,?); 然后:for i = 0; i < count($['name']) { execute(i+1,$a['name'][i],$a['surname'][i]) }
  • 第一步 - 忘记你有 PDO 和数据库 - 只需尝试以类似的方式echo 信息。你能做到吗?
  • foreach($arr['name'] as $key => $name) { $surname = $arr['surname'][$key]; }
  • 循环遍历$array['name'],得到对应的$array['surname']值,然后插入。

标签: php mysql pdo hardcode


【解决方案1】:

@Zerkms 是对的,你只需要学习如何处理这个数组。
最简单的方法是

foreach($array['name'] as $key => $name) {
    $surname = $array['surname'][$key];
    // now you can use the pair
    var_dump($name,$surname);
}

【讨论】:

  • thx,我还有一个问题,如何仅使用一个查询在带有 PDO 的 mysql 中插入此解决方案
  • 现在我的代码如下所示:codepad.org/E5fnuSCq 它只在 2 个等价行中插入最后一个 foreach 值
【解决方案2】:

这是 SQL 语句

INSERT INTO mytable (`id`,`name`,`surname`) VALUES(?,?,?);

然后是下面的伪代码:

for ($i = 0; $i < count($['name']); $i++) {
    $db->execute($i+1, $a['name'][$i], $a['surname'][$i]);
}

【讨论】:

  • 我必须使用 $key=&gt;$value 并使用 $key 来获取姓氏。考虑到您正在循环两个数组,这似乎不太合乎逻辑。如果姓氏更长,写$i &lt; count($['name']) || $ i &lt; count($a['surname']) 会更容易。如果是相反的(行然后列)我会使用foreach,因为它更整洁。
猜你喜欢
  • 2012-11-12
  • 1970-01-01
  • 2016-09-29
  • 2012-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-12
  • 2021-02-03
相关资源
最近更新 更多