这里是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;] 返回数组,而不是值。我的代码有什么问题吗?提前谢谢
答案 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]','')";
希望这有助于。