是否有更优雅的方式来破坏数据进行查询?

时间:2011-07-23 23:45:44

标签: php mysql sql implode

因为this回答我会问。

我的代码看起来像

<?php
$lines = file('file.txt');
$count = count($lines);
$i = 0;
$query = "INSERT INTO table VALUES ";
foreach($lines as $line){
    $i++;
    if ($count == $i) {
        $query .= "('".$line."')";
    }
    else{
        $query .= "('".$line."'),";
    }
}
echo $query;

在php中有更优雅的方法吗?

4 个答案:

答案 0 :(得分:4)

foreach ( $lines AS $line )  
{  
  $query[] = "($line)";  
}  

echo  "INSERT INTO table VALUES " . implode(",",$query);

是如何用implode做的,但我认为AlienWebguy更好

答案 1 :(得分:3)

$query = 'INSERT INTO table VALUES ';
$query .= "('" . implode("'), ('", $lines) . "')";

<强> UPD

对于2个字段,它看起来像(我想你使用php5 +):

$query = 'INSERT INTO table VALUES ';

$lines = array(array(1,2), array(3,4));
$query .= "('" . implode("'), ('", array_map(function($i) { return "'" . implode("', '", $i) . "'"; }, $lines)) . "')";

var_dump($query);

答案 2 :(得分:3)

foreach(file('file.txt') as $line){
    $query .= "('".$line."'),";
}
echo "INSERT INTO table VALUES " . rtrim($query,',');

答案 3 :(得分:1)

LOAD DATA INFILE更适合此特定任务:http://dev.mysql.com/doc/refman/5.1/en/load-data.html