使用php将多个html表单数组插入mysqli
我有一个HTML表单,它将多个数组传递到php中,然后插入到MySQL数据库中。在这方面,一切都很好,我可以用PHP检索数据。下面是.php中的使用php将多个html表单数组插入mysqli,php,arrays,mysqli,Php,Arrays,Mysqli,我有一个HTML表单,它将多个数组传递到php中,然后插入到MySQL数据库中。在这方面,一切都很好,我可以用PHP检索数据。下面是.php中的数据: <?php $z=0; if(isset($_POST['newarr'])){ $z = $_POST['newarr']; } if($z == 0){ echo' <div id="d1">Add between 1 and 25 items<br/
数据:
<?php
$z=0;
if(isset($_POST['newarr'])){
$z = $_POST['newarr'];
}
if($z == 0){
echo'
<div id="d1">Add between 1 and 25 items<br/></div>
<form method="post" action="">
<input type=number name=newarr min=1 max=25 />
<button type=submit value=submit>Submit</button>
</form>
';
}
else {
echo '
<form action="test.php" method="post">
<table for=record>
<th for=ww>Item Number</th>
<th for=c>UPC</th>
<th>Name</th>
<th>Size</th>
<th>Qty</th>
<th>Category</th>
';
for($i=1; $i<=$z; $i++){
echo' <tr>
<td>'.$i.'</td>
<td><input type="text" name="upc[]" value="" size="20" placeholder="Enter UPC" /></td>
<td><input type="text" name="name[]" value="" size="20" placeholder="Enter Name" /></td>
<td>
<select name="size[]">
<option value="">SELECT ONE</option>
<option value="6pp">6 pack/pouch</option>
<option value="8pp">8 pack/pouch</option>
<option value="10pp">10 pack/pouch</option>
<option value="12pp">12 pack/pouch</option>
<option value="24pp">24 pack/pouch</option>
<option value="325ml">325ml BTL</option>
<option value="750ml">750ml BTL</option>
<option value="1lt">1 Litter BTL</option>
<option value="1.75lt>1.75 Litter BTL</option>
<option value="1gal>1 Gallon BTL</option>
<option value="2gal>2 Gallon BTL</option>
<option value="5gal>5 Gallon BTL</option>
</select>
</td>
<td><input type="number" name="qty[]" value="" min="1" max="100" placeholder="Enter QTY" /></td>
<td>
<select name="type[]">
<option value="">SELECT ONE</option>
<option value="1">Mixers</option>
<option value="2">Rum</option>
<option value="3">Whisky</option>
<option value="4">Vodka</option>
<option value="5">Gin</option>
<option value="6">Tequila</option>
<option value="7">Beers</option>
<option value="8">Cognac</option>
<option value="9">Wine</option>
<option value="10">Champagne</option>
</select>
</td>
</tr>
';
}
echo '</table>
<div for=select>
<input type="reset" value="clear" />
<input type="submit" value="submit" />
</div>
</form>';
}
?>
<?php
include_once 'includes/admin_connect.php';
//$ins = "INSERT INTO products(UPC,product_name,product_size) VALUES";
$upc = mysqli_real_escape_string($mysqli, implode(',',$_POST['upc']));
$name = mysqli_real_escape_string($mysqli, implode(',',$_POST['name']));
$size = mysqli_real_escape_string($mysqli, implode(',',$_POST['size']));
$nArray = array(
'upc' => $upc,
'name' => $name,
'size' => $size,
);
//var_dump($nArray);
foreach($nArray as $row => $vals) {
$newArr = implode(',',array_keys($nArray));
$ins1 = 'INSERT INTO products ('.$newArr.') VALUES ('.$vals.')';
}
$query = mysqli_query($mysqli,$ins1) or die(mysqli_error($mysqli));
?>
这个特殊的代码给了我:
“字段列表”中的未知列“6pp”
我知道这意味着它将进入第一个select字段并将其作为表插入,但我不知道如何修复它。尝试以下方法:
<?php
include_once 'includes/admin_connect.php';
//a callback to use mysqli connection to escape strings
$mysqli_escape = function($str) use ($mysqli) {
return mysqli_real_escape_string($mysqli, $str);
};
//escape values in arrays
$upc = array_map($mysqli_escape, $_POST['upc']);
$name = array_map($mysqli_escape, $_POST['name']);
$size = array_map($mysqli_escape, $_POST['size']);
for($i=0;$i<count($upc);$i++) {
$ins1 = 'INSERT INTO products (UPC,product_name,product_size) VALUES (\''.$upc[$i].'\', \''.$name[$i].'\', \''.$size[$i].'\')';
$query = mysqli_query($mysqli,$ins1) or die(mysqli_error($mysqli));
}
?>
抛出错误:“字段列表”中的未知列“CocaCola”,这是我在第一行为product_name插入的值。是的,它起作用了,你引用这些值是什么意思(我知道你的做法不同,但不理解其背后的“语义”)。此外,在这种情况下,通过执行for循环,对于长db条目不是一个问题吗?您可以在同一查询中串联value(),以便在最后向数据库服务器发送一个查询。我所做的基本上是为查询中的字符串添加引号,一个不带引号的值“
被视为一个列名,这就是为什么会得到这些值errors@user3701157如果这确实对您有所帮助,您可以投票/接受此答案