将多个同名输入插入数据库
insert multiple same name input to database
我知道这里已经有人问过这个问题,但我经历了 20 多次,无法让下面的代码正常工作
<form action="" method="post" >
<td><input name="field1[]" value="" ></td>
<td><input name="field2[]" value="" ></td>
<td><input name="field3[]" value="" ></td>
<td><input name="field1[]" value=""></td>
<td><input name="field2[]" value=""></td>
<td><input name="field3[]" value=""></td>
<td><input name="field1[]" value=""></td>
<td><input name="field2[]" value=""></td>
<td><input name="field3[]" value=""></td>
<button type="submit" id="submit" name="submit" > Go </button>
</form>
<?php
if(isset($_POST["submit"])){
foreach($_POST['field1'] as $key => $value) {
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
$link = mysqli_connect("localhost", "dbuser", "dbpass", "dbname");
// Check connection
if($link === false){
die("ERROR: Could not connect. " . mysqli_connect_error());
}
// Prepare an insert statement
$sql = "INSERT INTO test (field1, field2, field3) VALUES (?, ?, ?)";
if($stmt = mysqli_prepare($link, $sql)){
// Bind variables to the prepared statement as parameters
mysqli_stmt_bind_param($stmt, "sss", $field1, $field2, $field3);
// Set parameters
$field1 = $_REQUEST['field1'];
$field2 = $_REQUEST['field2'];
$field3 = $_REQUEST['field3'];
// Attempt to execute the prepared statement
if(mysqli_stmt_execute($stmt)){
echo "Records inserted successfully.";
} else{
echo "ERROR: Could not execute query: $sql. " . mysqli_error($link);
}
} else{
echo "ERROR: Could not prepare query: $sql. " . mysqli_error($link);
}
// Close statement
mysqli_stmt_close($stmt);
// Close connection
mysqli_close($link);
}
}
?>
我的问题很清楚——如何将这个数组存储到数据库中。我做错了什么,因为我的数据库存储数组字而不是值。任何帮助将不胜感激
您引用的 $_POST['field1']
是一个数组,因此您的结果。
您需要引用数组的项目,即 $_POST['field1'][0]
等等。
您也不需要在 foreach
中准备查询。在循环外执行一次并节省 n* 到服务器的往返行程和 n* 查询编译。
<?php
if(isset($_POST["submit"])){
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
$link = mysqli_connect("localhost", "dbuser", "dbpass", "dbname");
// Check connection
if($link === false){
die("ERROR: Could not connect. " . mysqli_connect_error());
}
// Prepare an insert statement
$sql = "INSERT INTO test (field1, field2, field3) VALUES (?, ?, ?)";
$stmt = mysqli_prepare($link, $sql);
// Bind variables to the prepared statement as parameters
mysqli_stmt_bind_param($stmt, "sss", $field1, $field2, $field3);
foreach($_POST['field1'] as $key => $value) {
// Set parameters
$field1 = $_POST['field1'][$key];
$field2 = $_POST['field2'][$key];
$field3 = $_POST['field3'][$key];
// Attempt to execute the prepared statement
if(mysqli_stmt_execute($stmt)){
echo "Records inserted successfully.";
} else{
echo "ERROR: Could not execute query: $sql. " . mysqli_error($link);
}
}
}
?>
我知道这里已经有人问过这个问题,但我经历了 20 多次,无法让下面的代码正常工作
<form action="" method="post" >
<td><input name="field1[]" value="" ></td>
<td><input name="field2[]" value="" ></td>
<td><input name="field3[]" value="" ></td>
<td><input name="field1[]" value=""></td>
<td><input name="field2[]" value=""></td>
<td><input name="field3[]" value=""></td>
<td><input name="field1[]" value=""></td>
<td><input name="field2[]" value=""></td>
<td><input name="field3[]" value=""></td>
<button type="submit" id="submit" name="submit" > Go </button>
</form>
<?php
if(isset($_POST["submit"])){
foreach($_POST['field1'] as $key => $value) {
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
$link = mysqli_connect("localhost", "dbuser", "dbpass", "dbname");
// Check connection
if($link === false){
die("ERROR: Could not connect. " . mysqli_connect_error());
}
// Prepare an insert statement
$sql = "INSERT INTO test (field1, field2, field3) VALUES (?, ?, ?)";
if($stmt = mysqli_prepare($link, $sql)){
// Bind variables to the prepared statement as parameters
mysqli_stmt_bind_param($stmt, "sss", $field1, $field2, $field3);
// Set parameters
$field1 = $_REQUEST['field1'];
$field2 = $_REQUEST['field2'];
$field3 = $_REQUEST['field3'];
// Attempt to execute the prepared statement
if(mysqli_stmt_execute($stmt)){
echo "Records inserted successfully.";
} else{
echo "ERROR: Could not execute query: $sql. " . mysqli_error($link);
}
} else{
echo "ERROR: Could not prepare query: $sql. " . mysqli_error($link);
}
// Close statement
mysqli_stmt_close($stmt);
// Close connection
mysqli_close($link);
}
}
?>
我的问题很清楚——如何将这个数组存储到数据库中。我做错了什么,因为我的数据库存储数组字而不是值。任何帮助将不胜感激
您引用的 $_POST['field1']
是一个数组,因此您的结果。
您需要引用数组的项目,即 $_POST['field1'][0]
等等。
您也不需要在 foreach
中准备查询。在循环外执行一次并节省 n* 到服务器的往返行程和 n* 查询编译。
<?php
if(isset($_POST["submit"])){
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
$link = mysqli_connect("localhost", "dbuser", "dbpass", "dbname");
// Check connection
if($link === false){
die("ERROR: Could not connect. " . mysqli_connect_error());
}
// Prepare an insert statement
$sql = "INSERT INTO test (field1, field2, field3) VALUES (?, ?, ?)";
$stmt = mysqli_prepare($link, $sql);
// Bind variables to the prepared statement as parameters
mysqli_stmt_bind_param($stmt, "sss", $field1, $field2, $field3);
foreach($_POST['field1'] as $key => $value) {
// Set parameters
$field1 = $_POST['field1'][$key];
$field2 = $_POST['field2'][$key];
$field3 = $_POST['field3'][$key];
// Attempt to execute the prepared statement
if(mysqli_stmt_execute($stmt)){
echo "Records inserted successfully.";
} else{
echo "ERROR: Could not execute query: $sql. " . mysqli_error($link);
}
}
}
?>