插入时数组到字符串的转换
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
列为 1,train_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
函数中。
所以我有一个 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
列为 1,train_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
函数中。