2010-12-15 64 views
0

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

我的代码:

$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号我想要的信息。第一个是不完整的。

有人可以帮助我吗?

对不起,我的英语。

+0

不完整?少了什么东西? – travelboy 2010-12-15 21:00:03

+0

这是php吗?如果是这样,请添加php标签 – Enrique 2010-12-15 21:01:48

回答

0

检查您是否已经在阵列发送瓦尔从浏览器(如
输入名称=“some_name []” ...

你也可以检查一下,你通过把得到的var_dump在任何时间($ your_var )在脚本的任何地方。

好运:)

0

你可能想有你的查询和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键 变量将包含字符串 项目和你的名单将失败,包括后续使用的$num