代码之家  ›  专栏  ›  技术社区  ›  Ei Maung

php mysql一次插入n行?

  •  0
  • Ei Maung  · 技术社区  · 16 年前

    我怎么能 优化 这个代码?

    $items[0] = "Item-0";
    $items[1] = "Item-1";
    $items[2] = "Item-2";
    $items[3] = "Item-3";
    ...
    $items[n] = "Item-n";
    
    foreach($items as $item) {
        mysql_query("INSERT INTO mytable (item) VALUES ('$item')");
    }
    

    数组只是示例,我想知道的关键点是如何插入 n 没有查询的项目 n 时代?

    谢谢。

    3 回复  |  直到 14 年前
        1
  •  4
  •   user187291    16 年前

    可以使用mulitvalue insert语句

     insert into mytable(item) values('item1'),('item2') etc
    

    http://dev.mysql.com/doc/refman/5.1/en/insert.html

        2
  •  1
  •   lemon    16 年前
    INSERT INTO `mytable` (`item`) VALUES ('value 1'), ('value 2'), ('value 3')
    

    使用它

    $t = array("value 1", "value 2", "value 3");
    
    $query = "('";
    $query .= implode( "'), ('", $t);
    $query .= "')";
    
    echo $query;
    

    输出 ('value 1'), ('value 2'), ('value 3')

    现在,您需要做的就是将原始查询插入到该输出中。

        3
  •  1
  •   Community Mohan Dere    9 年前

    user187291's answer 是正确的,但是我不会只构建一个巨大的查询字符串。

    在说出10个值之后,我会运行一个insert。这样做似乎不太可能失败,然后向MySQL发送一个可能巨大的查询。

    $query = '';
    
    foreach($items as $key => $item) {
    
         if ($key % 10) {
            // Reset and insert
         }
    
    
    
    }