我试图在数组中存储$ _POST值,但我的输入字段有不同的名称,当我插入时只插入一个字段。
这是我的PHP代码。
<?php
$conn = new mysqli("localhost","root","","invoice");
if (isset($_POST['submit'])) {
$des = $_POST['describe'];
$qty = $_POST['quantity'];
$rate = $_POST['rate'];
$array = array($des, $qty, $rate);
foreach ($array as $key => $value) {
$sql = "INSERT INTO `product_description`(`product`, `quantity`, `rate`) VALUES ('".implode('","', $value)")";
$conn->query($sql);
}
}
?>
我是php语言的新手所以请任何人帮我在数组中存储多个字段值并运行插入查询?
答案 0 :(得分:0)
而不是使用foreach尝试这样
$sql = "INSERT INTO `product_description`(`product`, `quantity`, `rate`)
VALUES ('".$array[0]."','".$array[1]."','".$array[2]."')";
$conn->query($sql);
答案 1 :(得分:0)
1st:,因为您的输入是数组所以。您需要使用for
循环来获取each row
记录
第二名:使用prepared statement
来避免sql injection
<?php
$conn = new mysqli("localhost","root","","invoice");
if (isset($_POST['submit'])) {
for($i=0;$i<count($_POST['describe']);$i++){
$stmt = $conn->prepare("INSERT INTO `product_description` (`product`, `quantity`, `rate`) VALUES (?,?,?)");
$stmt->bind_param('sss',$_POST['describe'][$i],$_POST['quantity'][$i],$_POST['rate'][$i]);
$stmt->execute();
$row_count = $stmt->affected_rows;
if($row_count>0){
echo "data inserted";
}else{
echo "data inserted";
}
}
}
?>
答案 2 :(得分:0)
你不需要进行内爆或预告。当您提交表单并使用get
或post
获得结果时,您可以看到结果已经是数组形式。
我建议您使用bindparam
。您的查询对sql injection
开放。
试试这个:
<?php
$conn = new mysqli("localhost","root","","invoice");
if (isset($_POST['submit'])) {
explode($_POST);
$sql = "INSERT INTO `product_description`(`product`, `quantity`, `rate`) VALUES ('$describe,$quantity,$rate')";
$conn->query($sql);
}
?>
答案 3 :(得分:0)
试试这个
if (isset($_POST['submit'])) {
foreach($_POST['describe'] as $key=>$row){
$stmt = $conn->prepare("INSERT INTO `product_description` (`product`, `quantity`, `rate`) VALUES (?,?,?)");
$stmt->bind_param('sss',$row,$_POST[$key]['quantity'],$_POST[$key]['rate']);
$stmt->execute();
$row_count = $stmt->affected_rows;
if($row_count>0){
echo "data inserted";
}
}
}
答案 4 :(得分:0)
首先是否需要将值放在数组中?只需将您的查询更改为此并执行它
"INSERT INTO ´product_description´(´product´, ´quantity´, ´rate´) VALUES($des, $qty, $rate)";
删除所有foreach和数组创建语句