【问题标题】:Multidimensional Array insert into Mysql rows多维数组插入Mysql行
【发布时间】:2011-05-26 04:24:02
【问题描述】:

我有一个数组(二维)并将其插入到我的数据库中。

我的代码:

$yourArr = $_POST;

$action = $yourArr['action'];
$mysql = $yourArr['mysql'];
$total = $yourArr['total'];
unset( $yourArr['action'] , $yourArr['mysql'] , $yourArr['total'] );

foreach ($yourArr as $k => $v) {
  list($type,$num) = explode('_item_',$k);
  $items[$num][$type] = $v;
$pnr= $items[$num][pnr];
$pkt= $items[$num][pkt];
$desc= $items[$num][desc];
$qty= $items[$num][qty];
$price= $items[$num][price];


$eintragen = mysql_query("INSERT INTO rechnungspositionen (artikelnummer, menge, artikel, beschreibung,preis) VALUES ('$pnr', '$qty', '$pkt', '$desc', '$price')");
}

我在数据库中获得了 5 个插入,但只有第 5 个有我想要的信息。第一个是不完整的。

有人可以帮我吗?

对不起我的英语。

【问题讨论】:

  • 这是 php 吗?如果是,请添加 php 标签

标签: mysql arrays insert multidimensional-array


【解决方案1】:

您可能希望将您的查询和上面的 5 个分配放在 foreach 之外。而是在一个新循环中,每个项目只执行一次,而不是 5 次。您的缩进甚至暗示相同,但​​您的括号没有。

目前它每次只分配一个值并执行一个新的查询。 5 次后,所有变量都被分配,最后插入的行终于一切正常。

error_reporting(E_ALL);

$items = array();

foreach($yourArr as $k => $v) {

    // check here if the variable is one you need
    list($type, $num) = explode('_item_', $k);
    $items[$num][$type] = $v;
}

foreach($items as $item) {

    $pnr   = mysql_real_escape_string($item['pnr']);
    $pkt   = mysql_real_escape_string($item['pkt']);
    $desc  = mysql_real_escape_string($item['desc']);
    $qty   = mysql_real_escape_string($item['qty']);
    $price = mysql_real_escape_string($item['price']);

    $eintragen = mysql_query("INSERT INTO rechnungspositionen (artikelnummer, menge, artikel, beschreibung,preis) VALUES ('$pnr', '$qty', '$pkt', '$desc', '$price')");
}

将您的错误级别切换到 E_ALL 会暗示这个方向,除此之外:

  • 不带引号的数组键:如果一个常量 存在相同的名称,您的脚本将 不可预测。

  • 未转义的变量:格式错误的值 甚至只包含一个报价 需要在那里会让你失败 查询或更糟。

  • 天真的爆炸:不是每个 $_POST-key 变量将包含字符串 item 并且您的列表将失败,包括后续使用 $num

【讨论】:

    【解决方案2】:

    检查您是否从浏览器发送了数组中的变量(如
    输入名称="some_name[]" ...

    您还可以通过将 var_dump($your_var) 放在脚本中的任何位置来随时检查您得到了什么。

    祝你好运:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-12
      • 1970-01-01
      • 2014-05-28
      • 2017-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-06
      相关资源
      最近更新 更多