从多个文本字段获取输入到数组并插入到数据库字段

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 - fieldOnefieldTwofieldThreefieldFour.

你的 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