2014-12-07 50 views
0

我有一个页面,其上有4种不同的表单,它们都是通过发布(在不同时间提交)提交的,目的是将信息插入到数据库中。这些表格都有

name="table_name[field_name]" 

我想为所有窗体构建一个INSERT查询。事情是这样的:

if (isset($_POST) { 
     $sql = "INSERT INTO *get table name* SET *get field name* = $_POST["table name"]["field name"], 
etc; 
    } 
+0

在每个单独的窗体中使用隐藏字段作为ID,chan ge为SQL的$ tablename变量。出于安全原因,不要直接插入字符串。使用switch语句对表名进行硬编码。 – Jhecht 2014-12-07 06:54:24

+1

@Zach Smith其实你是什么意思这个INSERT INTO *获取表名* SET *获取字段名* = $ _POST [“表名”] [“字段名”]查询 – 2014-12-07 06:59:21

+0

将有一个$ _POST数组看起来像这样[“table_name”=> [“field 1”=> name,“field 2”=> name等]]。 (我认为?)。然后,我想要构建一个使用键来定义表中的表参数的单个sql语句,并将值作为值 – 2014-12-07 07:12:41

回答

1

您可以在名为例如form1form2等 每个表单创建隐藏字段和构建这样的查询

你有这两种形式例如

<form method="post"> 
    <input type="hidden" name="form1"> 
    <input type="text" name="some_field"> 
    <input type="text" name="other_field"> 
    <input type="submit"> 
</form> 

<form method="post"> 
    <input type="hidden" name="form2"> 
    <input type="text" name="field"> 
    <input type="submit"> 
</form> 

可以构建INSERT使用此方法查询(可以改进它)

<?php 

$tables = array('form1' => 'table_name','form2' => 'table_name2'); 

// Building INSERT QUERY 
$sql = "INSERT INTO "; 

// keep only wanted fields (change this) to 'field' => value 
$data = $_POST; 

$count = 0; 
$i = 0; 

foreach ($data as $key => $value) { 
    if(array_key_exists($key, $tables)){ 
     $sql .= $tables[$key] . ' SET '; 
     unset($data[$key]); 
     $count = count($data); 

    } else { 
     if($count !== 0){ 
      $i++; 
      $sql .= " $key = '$value' "; 
      $sql .= $i == $count ? " " : " AND "; 
     } 

    } 
} 

echo $sql; 
1

用途:

foreach (array_keys($_POST) as $field) 
{ 
    echo $_POST[$field]; 
} 

$field包含您的HTML表单字段。