我想知道爲什麼我的foreach循環在我的mysql表中創建一個額外的行,並只插入一列與數據。我是新來的PHP和MySQL,所以任何幫助,非常感激。下面是從我的形式foreach循環在我的查詢中添加額外的一行
<form name="insert_test" action="inserttest.php" method="post">
<table>
<tr>
<td>Brand</td><td>terms</td><td>HW Stamp</td><td>Origin</td><td>Cases</td>
</tr>
<tr>
<td><input type="text" name="brand[]" /></td>
<td><input type="text" name="terms[]" /></td>
<td><input type="text" name="hwstamp[]" /></td>
<td><input type="text" name="origin[]" /></td>
<td><input type="text" name="cases[]" /></td>
</tr>
</table>
<table>
<tr>
<td>Brand</td><td>terms</td><td>HW Stamp</td><td>Origin</td><td>Cases</td>
</tr>
<tr>
<td><input type="text" name="brand[]" /></td>
<td><input type="text" name="terms[]" /></td>
<td><input type="text" name="hwstamp[]" /></td>
<td><input type="text" name="origin[]" /></td>
<td><input type="text" name="cases[]" /></td>
</tr>
</table>
<input type="hidden" name="report_id" value="<?php echo $report_id;?>" />
<input type="submit" value="Submit" />
的代碼,這是我的PHP代碼:
foreach ($_POST['brand'] as $key => $brand) {
$terms = addslashes($_POST['terms'][$key]);
$hwstamp = addslashes($_POST['hwstamp'][$key]);
$origin = addslashes($_POST['origin'][$key]);
$cases = addslashes($_POST['cases'][$key]);
$report_id = addslashes($_POST['report_id'][$key]);
$queryreg= "INSERT INTO lots VALUES('',' $brand', '$terms',' $hwstamp', '$origin', '$cases','$report_id')" or die(mysql_error());
mysql_query($queryreg);
}
echo mysql_error();
在我的表是(ID,品牌方面,hwstamp列,origin,cases,report_id)id是主鍵,而report_id是外鍵。 當我向兩個表中輸入數據時,它會正確插入創建的兩行和列中的所有數據,當我只將數據輸入到一個表中時,它會在表中創建一行並創建第二行除了report_id列以外,所有列都是空的。
強制[PDO blurb](http://stackoverflow.com/questions/866860/mysql-versus-pdo)? POST的樣子是什麼?它實際上是聯想嗎? – ficuscr
在addslashes上,而不是使用該:http://stackoverflow.com/questions/1286419/escaping-using-slashes-and-then-using-stripslashes-php 此外,你可能想明確指定你的列名稱隱含地依賴他們的秩序和存在。 'insert into lots(column,another,another,terms,etc)values('','$ brand'...' – Kzqai
* foreach *或* POST *系統不可能失敗,所以它必須在你的HTML ,用戶輸入或你有一箇舊行仍然存在於數據庫... –