【问题标题】:Insert with PHP associative array用 PHP 关联数组插入
【发布时间】:2017-02-13 14:54:11
【问题描述】:

我面临一个小问题,我不知道是否有可能实现它。让我解释一下:

我有一个这样的关联数组:

Array
(
    [res_id] => 104
    [subject] => Test
    [type_id] => 503
    [format] => pdf
    [typist] => fefe
    [creation_date] => 2017-02-10 14:27:37.236711
    [modification_date] => 2017-02-10 14:27:37.236711
    [fulltext_result] => 1
    [doc_date] => 2017-02-01 00:00:00
    [docserver_id] => FASTHD_MAN
    [path] => 2017#02#0001##
    [filename] => 0008.pdf
    [fingerprint] => 
    [filesize] => 84979
    [status] => VAL
    [destination] => DSG
    [priority] => 2
    [is_multi_docservers] => N
    [is_frozen] => N
    [tablename] => res_letterbox
    [initiator] => COU
    [dest_user] => ddaull
    [locker_user_id] => fefefef
    [locker_time] => 2017-02-13 15:52:25.624521
    [confidentiality] => N
    [tnl_path] => 2017#02#0001##
    [tnl_filename] => 0008.png
)

我想知道我是否可以使用这个关联数组来发出 INSERT TO 请求?我希望数组的第一部分(如 res_id、subject)进入列部分以进行插入。数组的第二部分(如 104,Test)将转到值

提前感谢您的帮助,希望我足够清楚..

【问题讨论】:

  • 当然可以,但是需要自己写。循环遍历您的数组以构建查询,或使用 array_keys()array_values() 提取您需要的内容。
  • 所以在使用 array_keys 和 array_value 之后,我必须有两个数组并进行这样的查询: INSERT INTO tablename ($arrayColumn) VALUES ($arrayValues) ?
  • @Nathan30 你的意思是像这样插入表('res_id')值(104)?
  • 各个键及其值?
  • @BunkerBoy 或多或少是的。我只想要一个请求来插入我的数组中包含的所有值。这些值必须与相应的键相匹配

标签: php sql arrays


【解决方案1】:

@Nathan30 试试这个:

 <?php
    $arr = array(
        "res_id" => 104,
        "subject" => "Test",
        "type_id" => 503,
        "format" => "pdf",
        "typist" => "fefe",
        "creation_date" => "2017-02-10 14:27:37.236711",
        "modification_date" => "2017-02-10 14:27:37.236711",
        "fulltext_result" => 1,
        "doc_date" => "2017-02-01 00:00:00",
        "docserver_id" => "FASTHD_MAN",
        "path" => "2017#02#0001##",
        "filename" =>" 0008.pdf",
        "fingerprint" => "",
        "filesize" => 84979,
        "status" => "VAL",
        "destination" => "DSG",
        "priority" => 2,
        "is_multi_docservers" => "N",
        "is_frozen" => "N",
        "tablename" => "res_letterbox",
        "initiator" => "COU",
        "dest_user" => "ddaull",
        "locker_user_id" => "fefefef",
        "locker_time" => "2017-02-13 15:52:25.624521",
        "confidentiality" => "N",
        "tnl_path" => "2017#02#0001##",
        "tnl_filename" => "0008.png",
    );
    echo "<pre>";
    print_r($arr);
    $column = array();
    $values = array();
    foreach($arr as $key => $value){
        $column[] = $key;
        $values[] = $value;
    }

    now query will be like:

    "insert into table values(".implode(',', $column).") values (".implode(',', $values).")";

【讨论】:

  • 非常感谢。我只需要修改 $values[] = $value;到 $values[] = "'" 。 $价值。 "'";但你的答案正是我所需要的
猜你喜欢
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
  • 2012-11-10
  • 2011-01-27
  • 1970-01-01
  • 2013-12-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多