从多个文本字段获取输入到数组并插入到数据库字段
Get inputs from multiple textfields to array and insert to db field
我有一个订单。它有 10 个文本字段供用户输入数量。如何将输入存储到数组并插入到数据库字段(以逗号分隔)?注意:不需要在所有文本字段上输入。例如,输入是 1,2,3,4.. 它也应该出现在 db 字段中 1,2,3,4
示例和描述会很棒。我对此比较陌生。
HTML
<form action="my_page_that_processes_orders.php" method="post">
<input type="text" name="order[product1]" />
<input type="text" name="order[product2]" />
<input type="text" name="order[product3]" />
<input type="text" name="order[product4]" />
<input type="submit" />
</form>
my_page_that_processes_orders.php
$data = $_POST["order"];// Advisable to perform checks for security reasons (not going to do it)
$aux = '';
foreach($data as $product => $qty) {
// Do whatever you please with the data.
$aux .= "$product $qty,"; // For instance.
}
$string_to_insert = rtrim($aux, ",");
// Insert it in DB or do more processing stuff.
希望对您有所帮助。
亲切的问候。
假设这是您的 表单: 如果您只关心订单数组,而不关心相应的键。
<form action="submit.php" method="post">
<input type="text" name="order[]" />
<input type="text" name="order[]" />
<input type="text" name="order[]" />
<input type="text" name="order[]" />
<input type="submit" />
</form>
你的submit.php:
<?php
$data ="";
foreach($_POST["order"] as $key=>$val){
if(isset($val) && $val !="")
$data.=$val.",";
}
$data=trim($data);
echo $data;// use data
注意: 不要使用 mysql 使用 PDO 或 mysqli 代替。 mysql 已弃用。
因此,假设您有一个包含四个文本字段的 table - fieldOne
、fieldTwo
、fieldThree
、fieldFour
.
你的 html form
应该是这样的(我跳过了不相关的部分)。
<form method="POST">
<textarea name='data[fieldOne]'></textarea>
<textarea name='data[fieldTwo]'></textarea>
<textarea name='data[fieldThree]'></textarea>
<textarea name='data[fieldFour]'></textarea>
</form>
现在,您的 PHP
代码:
$data = $_POST['data']; // PHP converts names like data[fieldOne] into arrays.
foreach ($data as $key => $value) {
$fieldNames[] = "`{$key}`"; //field names for our insert statement - `fieldOne`, `fieldTwo`, etc...
$values[":{$key}"] = strip_tags($value);
}
$stmt = $pdo->prepare("INSERT INTO `tableName` (".implode(', ', $fieldNames).") VALUES (".implode(", ", array_keys($values)).")"; // If you're not using PDO and prepared statements you're doing it wrong, so i absolutely recommend you learning that if you haven't already.
$stmt->execute($values);
这应该可以解决问题。
请注意,使用准备好的语句可以让您免于手动转义数据。但是,如果您担心 XSS
攻击,您仍然应该使用 filter
扩展名的 strip_tags
。
我有一个订单。它有 10 个文本字段供用户输入数量。如何将输入存储到数组并插入到数据库字段(以逗号分隔)?注意:不需要在所有文本字段上输入。例如,输入是 1,2,3,4.. 它也应该出现在 db 字段中 1,2,3,4
示例和描述会很棒。我对此比较陌生。
HTML
<form action="my_page_that_processes_orders.php" method="post">
<input type="text" name="order[product1]" />
<input type="text" name="order[product2]" />
<input type="text" name="order[product3]" />
<input type="text" name="order[product4]" />
<input type="submit" />
</form>
my_page_that_processes_orders.php
$data = $_POST["order"];// Advisable to perform checks for security reasons (not going to do it)
$aux = '';
foreach($data as $product => $qty) {
// Do whatever you please with the data.
$aux .= "$product $qty,"; // For instance.
}
$string_to_insert = rtrim($aux, ",");
// Insert it in DB or do more processing stuff.
希望对您有所帮助。
亲切的问候。
假设这是您的 表单: 如果您只关心订单数组,而不关心相应的键。
<form action="submit.php" method="post">
<input type="text" name="order[]" />
<input type="text" name="order[]" />
<input type="text" name="order[]" />
<input type="text" name="order[]" />
<input type="submit" />
</form>
你的submit.php:
<?php
$data ="";
foreach($_POST["order"] as $key=>$val){
if(isset($val) && $val !="")
$data.=$val.",";
}
$data=trim($data);
echo $data;// use data
注意: 不要使用 mysql 使用 PDO 或 mysqli 代替。 mysql 已弃用。
因此,假设您有一个包含四个文本字段的 table - fieldOne
、fieldTwo
、fieldThree
、fieldFour
.
你的 html form
应该是这样的(我跳过了不相关的部分)。
<form method="POST">
<textarea name='data[fieldOne]'></textarea>
<textarea name='data[fieldTwo]'></textarea>
<textarea name='data[fieldThree]'></textarea>
<textarea name='data[fieldFour]'></textarea>
</form>
现在,您的 PHP
代码:
$data = $_POST['data']; // PHP converts names like data[fieldOne] into arrays.
foreach ($data as $key => $value) {
$fieldNames[] = "`{$key}`"; //field names for our insert statement - `fieldOne`, `fieldTwo`, etc...
$values[":{$key}"] = strip_tags($value);
}
$stmt = $pdo->prepare("INSERT INTO `tableName` (".implode(', ', $fieldNames).") VALUES (".implode(", ", array_keys($values)).")"; // If you're not using PDO and prepared statements you're doing it wrong, so i absolutely recommend you learning that if you haven't already.
$stmt->execute($values);
这应该可以解决问题。
请注意,使用准备好的语句可以让您免于手动转义数据。但是,如果您担心 XSS
攻击,您仍然应该使用 filter
扩展名的 strip_tags
。