dongqie8661 2014-04-11 14:00
浏览 16
已采纳

将数组更改为查询PHP

Basically I have this array that I want to change into a database query

Array
(
    [table] => menu
    [fields] => Array
        (
            [mid] => menu_admin
            [language] => EN
            [name] => Admin
        )

)

Array
(
    [table] => user
    [fields] => Array
        (
            [uid] => 1
            [rid] => admin
            [first_name] => Admin
            [last_name] => Admin
            [email] => contact@admin.com
            [password] => xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
            [date_register] => Zend_Db_Expr Object
                (
                    [_expression:protected] => NOW()
                )

            [last_connexion] => NULL
            [enable] => 1
        )

)

and so on...And I'd like to have it like this:

INSERT INTO `menu` (`mid`, `language`, `name`) VALUES
('menu_admin', 'EN', 'Admin');
INSERT INTO `user` (`uid`, `rid`, `first_name`, `last_name`, `email`, `password`, `date_register`, `last_connexion`, `enable`) VALUES
(1, 'admin', 'Admin', 'Admin', 'contact@admin.com', 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', '2014-02-27 15:33:45', '0000-00-00 00:00:00', 1);

Here's what I tried :

foreach ($query as $sql) { 
$keys = rtrim(explode(", ", array_keys($sql['fields']), ",")); //<--Here
$fields = rtrim(explode(", ", $sql['fields']), ",");  //<--And here
$sql = sprintf("INSERT INTO %s (%s) VALUES (%s)", $sql['table'], $fields, $keys); 
}
var_dump($sql);

Here's the Error : explode() expects parameter 2 to be string, array given But I just can't quite work out how I achieve it. Any help with this? Thanks.

  • 写回答

2条回答 默认 最新

  • duanhuilao0787 2014-04-11 14:06
    关注

    Here's a function that will build a SQL statement from your source array:

    function buildInsertSQL($array){
        foreach($array as $key => $value){
            if ($key == 'table'){
                $table = $value;    
            }
            if ($key == 'fields'){
                $columns = array_keys($value);
                $values = array_values($value);
            }
        }
        $sql = "INSERT INTO `". $table . "` (".implode(", ", $columns).")";
        $sql .= " VALUES ('".implode("', '", $values)."') ";
        return $sql;
    
    }
    
    $test = array(
        'table' => 'menu',
        'fields' => array(
                'mid' => 'menu_admin',
                'language' => 'EN',
                'name' => 'Admin'
            )
    
    );
    
    $sql = buildInsertSQL($test);
    echo $sql;
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 BP神经网络控制倒立摆
  • ¥20 要这个数学建模编程的代码 并且能完整允许出来结果 完整的过程和数据的结果
  • ¥15 html5+css和javascript有人可以帮吗?图片要怎么插入代码里面啊
  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算