在php中从数组中提交多个值

时间:2017-11-07 06:22:05

标签: php

这里是html:

<div class="control-group">
    <label class="control-label">Pilih Item :</label>
    <div class="controls">
        <?php 
        $id=$_GET['id'];
        foreach($db->tampil_data_invoice($id) as $d){
            $lihatitem = mysql_query("select * from tbl_item where id_item ='$d[id_item]'");
            $item = mysql_fetch_array($lihatitem);
            $lihatkemasan = mysql_query("select * from tbl_harga_item where id_harga ='$d[id_harga]'");
            $kemasan = mysql_fetch_array($lihatkemasan);
            echo '<input type="checkbox" name="id_alokasi[]" value="$d[id_alokasi]"/><table class="table table-bordered data-table">
        <tr><th>Nama Item</th>
        <th>Kemasan</th>
        <th>Qty</th></tr>
        <tr><td>'.$item[nama_item].' </td><td>kemasan : '.$kemasan[kemasan].'</td><td>qty : '.$d[alokasi].'</td></table></br></tr>';
        }?>
    </div>
</div>


<?php 
$number = count($_POST["id_alokasi"]);  
if($number > 0)  
{  
    for($i=0; $i<$number; $i++)  
    {  
        if(trim($_POST["id_alokasi"][$i] != ''))  
        {  
            $sql = "INSERT INTO tbl_item_invoice VALUES('', '$id_invoice','$_POST[id_alokasi][$i])','')";  
            mysql_query($sql);  
        }  
    }  
?>

有人可以帮我解释为什么 $ _ POST [&#39; id_alokasi&#39;] 返回数组,而不是值。我的代码有什么问题吗?提前谢谢

2 个答案:

答案 0 :(得分:0)

您肯定需要阅读PHP basics

首先 - 单引号不能理解&#34;变量,所以:

echo '<input type="checkbox" name="id_alokasi[]" value="$d[id_alokasi]"/>

只输出值设置为字符串的输入&#39; $ d [id_alokasi]&#39;

接下来,即使您使用双引号,它也不会理解复杂的构造,因此它可以采用简单的数组值,但不是多维数据,因此在这种情况下,您需要使用连接或花括号。

您的代码:

$sql = "INSERT INTO tbl_item_invoice VALUES('', '$id_invoice','$_POST[id_alokasi][$i])','')";

失败,因为它,它理解$ _POST [id_alokasi],但是甚至没有尝试接下来[$ i],php尝试将$ _POST [id_alokasi]转换为字符串,所以你有一个通知。

你可以写

$sql = "INSERT INTO tbl_item_invoice VALUES('', '$id_invoice','{$_POST[id_alokasi][$i]})','')";

最后一个,你应 直接将用户输入包含在数据库查询中,因为SQL Injections

你应该学习&#34;正确的方式&#34;与你学习语法事物几乎同时发生的事情&#34;

答案 1 :(得分:0)

找到了这个。在您的SQL查询中添加了不需要的圆括号),请尝试替换以下代码并运行您的脚本。

$sql = "INSERT INTO tbl_item_invoice VALUES('', '$id_invoice','$_POST[id_alokasi][$i]','')";

希望这有助于。