我试图变得聪明,可能太聪明了,创建了一组表单,这些表单将根据输入名称动态地将数据插入数据库。
我拥有它,因此它可以正确构建查询,但是当我尝试插入它时失败,因为它是一个格式错误的查询,是否有更好的方法来实现我想要实现的目标,但类似?
<form method="post">
<input type="text" name="form_array['text']" />
<button name="insert">Go</button>
</form>
这是我在提交表单时生成的查询:
$setup['table'] = "table1";
if(isset($_POST['insert'])){
$inserts = "";
$values = "";
foreach($_POST['form_array'] as $form_id => $form_data){
if(!empty($form_data)){
if(!isset($first_run)){
$first_run = 1;
$inserts .= $form_id;
$values .= "'".$form_data."'";
} else {
$inserts .= ", ".$form_id;
$values .= ", '".$form_data."'";
}
} else {
die('error');
}
}
die("INSERT INTO '".$setup['table']."' ($inserts) VALUES ($values)");
}
谢谢。
最佳答案
除了向您评论的所有修复之外;这个可以简化,试试吧;
<form method="post">
<input type="text" name="form_array[column1]" />
<input type="text" name="form_array[column2]" />
<button name="insert">Go</button>
</form>
<?php
if(isset($_POST['insert'])){
$table = 'table';
$handler = 'form_array';
$keys = array_keys($_POST[$handler]);
$sql = "INSERT INTO `{$table}` (`".implode('`, `', $keys)."`) VALUES ('".implode("', '", $_POST[$handler])."')";
echo $sql;
}
输出:
INSERT INTO `table` (`column1`, `column2`) VALUES ('value1', 'value2')
关于从表单创建 PHP 动态查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32059554/