我正在从包含表名,字段名和字段值的嵌套数组中生成一个列表,并重复表名,即

Table1, Field1, Value1
Table1, Field2, Value2
Table1, Field3, Value3
Table2, Field1, Value1
Table3, Field1, Value1
Table3, Field2, Value2
...


在表和字段的数量因数组而异的地方,我想编写一个INSERT来将值持久保存在mysql表中。为了生成我正在使用的sql:

function array2sql($tableName,$key,$element){
            if ($element){
            $sql="INSERT into $tableName ($key) values ($element);";
            }
}


结果是:

INSERT into Table1 (Field1) values (Value1);
INSERT into Table1 (Field2) values (Value2);
... etc.


有没有更好的方法来创建插入语句?

对生成变量的数组的说明:

数组是嵌套的,用于设置表名的数组名称与此类似:

Table1[(Field1=>Value1,Field2=>Value2, Field3=>Value3),
     [Table2(Field1=>Value1),
         [Table3(Field1=>Value1)]
     ]
]


首先解析嵌套数组,并丢弃所有以[0]为键的子数组。

最佳答案

或像这样的数组

$tab = array(
    array('table1','champ1','valeur1'),
    array('table1','champ2','valeur2'),
    array('table2','champ1','valeur1'),
    array('table2','champ2','valeur2'),
    array('table2','champ3','valeur3')
    );


然后 :

function array2sql($tab){
    $sql = '';
    $fields = '';
    $values = '';
    $extable = $tab[0][0];
    foreach( $tab as $line ) {
        if ($extable == $line[0]) {
            $fields .= $line[1].',';
            $values .= $line[2].',';
        } else {
            $sql .= 'INSERT INTO ' . $extable . ' (' . rtrim($fields, ',') . ') VALUES (' . rtrim($values, ',') . ');';
            $fields = '';
            $values = '';
            $extable = $line[0];
        }
    }
    $sql .= 'INSERT INTO ' . $extable . ' (' . rtrim($fields, ',') . ') VALUES (' . rtrim($values, ',') . ');';
    return $sql;
}

关于php - 从三个变量创建插入语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37039266/

10-09 07:08