同步循环两个数组

问题描述 投票:0回答:4
php arrays foreach
4个回答
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>';
}

1
投票

您可以在 foreach 中使用

$key
,但这要求键存在于两个数组中。您可以使用
isset()
轻松检查。

$arr1 = array(...);
$arr2 = array(...);

foreach($arr1 as $key => $value) {
    echo $arr1[$key];
    echo $arr2[$key];
}

1
投票

在您的

HTML
中,tpye 应该是
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++;
}

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 注入 的风险。请记住,我们在这里接受用户输入,这永远不安全!

© www.soinside.com 2019 - 2024. All rights reserved.