我的HTML就像这样
<table>
<tr>
<td><input type="text" name="input_1[]</td>
<td><input tpye="text" name="input_2[]</td>
</tr>
<tr>
<td><input type="text" name="input_1[]</td>
<td><input tpye="text" name="input_2[]</td>
</tr>
</table>
在提交时,值将发布到下一个站点。
我知道如何处理一个array[]
,如下所示:
foreach($array as $var) {
echo $var;
}
所以,我的问题是,我必须在每个内部构建一个sql-Query,它应该像
$sql="INSERT into table (value1,value2) VALUES (input_1,input_2)"
如何解决这个问题,我不认为每个人都可以处理这样的事情:
foreach($array1 as $var1, $array2 as $var2){
....
答案 0 :(得分:1)
您可以在foreach中使用$key
,但这需要密钥存在于两个数组中。您可以使用isset()
轻松检查该内容。
$arr1 = array(...);
$arr2 = array(...);
foreach($arr1 as $key => $value) {
echo $arr1[$key];
echo $arr2[$key];
}
答案 1 :(得分:1)
您可以使用for
循环来实现:
<?php
$a = $_POST['input_1'];
$b = $_POST['input_2'];
for($i=0; $i<count($a); $i++) {
$sql="INSERT into table (value1,value2) VALUES ('{$a[$i]}','{$b[$i]}')";
echo $sql .'<br>';
}
答案 2 :(得分:1)
您的HTML
类型应为type
。试试如下
在HTML中
<form action="test.php" method="post">
<table>
<tr>
<td><input type="text" name="input_1[]"> </td>
<td><input type="text" name="input_2[]"></td>
</tr>
<tr>
<td><input type="text" name="input_1[]"></td>
<td><input type="text" name="input_2[]"></td>
</tr>
<tr>
<td></td>
<td><input type="submit"></td>
</tr>
</table>
</form>
在PHP(test.php)
中$post = $_POST;
$count = 0;
for($i = 0; $i < count($post['input_1']); $i++){
$inp1 = $post['input_1'][$count];
$inp2 = $post['input_2'][$count];
$sql = "INSERT into table (value1,value2) VALUES ('$inp1', '$inp2')";
$count++;
}
答案 3 :(得分:0)
首先,看看你的HTML:
<td><input type="text" name="input_1[]</td>
应该是
<td><input type="text" name="input_1[]"/></td>
第一种解决方案,如果您使用 PDO 连接到您的数据库:
<?php
if($_SERVER['REQUEST_METHOD'] === 'POST') { //if something posted to server
$array = array($_POST['input_1'], $_POST['input_2']);
$stmt = $db->prepare("INSERT into table (value1, value2) VALUES (?, ?)");
foreach($array as $key) {
$stmt->execute(array($key[0], $key[1]));
}
}
如果你使用 MySQLi :
,这是第二个解决方案<?php
if($_SERVER['REQUEST_METHOD'] === 'POST') {
$array = array($_POST['input_1'], $_POST['input_2']);
$stmt = $db->prepare("INSERT into table (value1, value2) VALUES (?, ?)");
foreach($array as $key) {
$stmt->bind_param('ss', $key[0], $key[1]);
$stmt->execute();
}
$stmt->close();
}
我在这里使用预备语句是因为1.它更快且2.它大大降低了SQL injection的风险。请记住,我们在此处接受用户输入,这绝不是安全的!