我有一张订单。它有10个文本字段供用户输入数量。如何将输入存储到数组并插入到db字段(由逗号分隔)?注意:不需要在所有文本字段上输入。例如,输入是1,2,3,4 ..它应该出现在db字段1,2,3,4
中示例和说明会很棒。我对此比较陌生。
答案 0 :(得分:3)
所以,我们假设您有一个包含四个文字字段的表格 - 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
次攻击,则仍应使用strip_tags
分机filter
。
答案 1 :(得分:2)
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.
希望它有所帮助。
亲切的问候。
答案 2 :(得分:0)
假设这是你的形式:,如果你只是打扰订单数组,就像对应的密钥一样。
<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。