插入时数组到字符串的转换

Array to string conversion on Insert

所以我有一个 selector 是基于我的数据库。一旦人们 select 从那个 select 或 select 那里得到一些东西,然后按下一步。他们将看到此页面:

(此处示例中选择了 train02)

代码为:

<form method="POST" action="add_to_summary.php?user_id=<?php echo $_SESSION['user_id']?>">
            <div id="customer_list_table">
                <table>
                    <tr>
                        <th>Train id</th>
                        <th>Train Name</th>
                        <th>Tare Weight</th>
                        <th>Numbers of bogies</th>
                        <th>Numbers of axles</th>
                    </tr>
                    <?php 
                        foreach($_POST["checkbox"] as $key=>$val){
                        $data = $database->getAllAssoc_id($val);
                        foreach($data as $data1) { ?>
                            <tr>
                                <input type='hidden' name='user_id[<?php echo $_GET['user_id']?>]' value='<?php echo $_GET['user_id']?>'>
                                <input type='hidden' name='train_id[<?php echo $data1['train_id']?>]' value='<?php echo $data1['train_id']?>'>
                                <td><?= $data1['train_id'] ?></td>
                                <td><?= $data1['train_name'] ?></td>
                                <td><?= $data1['tare_weight'] ?></td>
                                <td><?= $data1['number_of_bogies'] ?></td>
                                <td><?= $data1['number_of_axles'] ?></td>
                            </tr><?php
                        }
                    } ?>
                </table>
                </div>
            <input name="Add to list" type="submit" id="add_to_list" value="Add to list">
        </form>

当他们按“添加到列表”时,插入内容会像这样发送到我的数据库:

function summary_add($id) {
            $sql = "INSERT INTO user_train_information "
        . "(train_id, user_id)"
        . "VALUES (:train_id, :user_id) ";
            $sth = $this->pdo->prepare($sql);
            $sth->bindParam(':train_id', $id, PDO::PARAM_STR);
            $sth->bindParam(':user_id', $id, PDO::PARAM_STR);
            $sth->execute();
    }

add_to_summary.php 上的代码:

<?php
        foreach($_POST['user_id'] as $id) {
            $test = $database->summary_add($id);
        }
?>

现在,信息被插入到我的数据库中。但是我 selected 的两倍。像这样:

当我将 $_POST['user_id'] 更改为 $_POST['train_id'] 时,它输入 14 2 次。

当我执行 foreach($_POST as $id) 时,我得到 2 个数组到字符串的转换错误。

我该如何解决这个问题???

我希望 table 正确插入,以便 user_id 列为 1train_id 列为 14 编辑:
select或/select离子盒:

编辑:
它现在正在运行!

改变了什么:

更改为隐藏字段:

<input type='hidden' name='user_id' value='<?php echo $_GET['user_id']?>'>
<input type='hidden' name='train_id' value='<?php echo $data1['train_id']?>'>

函数:

function summary_add($train_id, $user_id) {
            $sql = "INSERT INTO user_train_information "
        . "(train_id, user_id)"
        . "VALUES (:train_id, :user_id) ";
            $sth = $this->pdo->prepare($sql);
            $sth->bindParam(':train_id', $train_id, PDO::PARAM_STR);
            $sth->bindParam(':user_id', $user_id, PDO::PARAM_STR);
            $sth->execute();
    }

我在哪里插入:

<?php
            $test = $database->summary_add($_POST['train_id'], $_POST['user_id']);
            print_r($_POST);
?>
function summary_add($train_id, $user_id) {
            $sql = "INSERT INTO user_train_information "
        . "(train_id, user_id)"
        . "VALUES (:train_id, :user_id) ";
            $sth = $this->pdo->prepare($sql);
            $sth->bindParam(':train_id', $train_id, PDO::PARAM_STR);
            $sth->bindParam(':user_id', $user_id, PDO::PARAM_STR);
            $sth->execute();
    }

add_to_summary.php 上的代码:

<?php
            $test = $database->summary_add($_POST['train_id'][0], $_POST['user_id'][0]);
?>

总结:您必须将 train_id 和 user_id 都放入 summary_add 函数中。