0

この回答があったので質問します。

私のコードは次のようになります

<?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

4 に答える 4

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

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

implodeでそれを行う方法ですが、AlienWebguyの方が優れていると思います

于 2011-07-23T23:59:57.000 に答える
3
$query = 'INSERT INTO table VALUES ';
$query .= "('" . implode("'), ('", $lines) . "')";

UPD:

For 2 fields it could look like (I suppose you use 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);
于 2011-07-23T23:48:37.290 に答える
3
foreach(file('file.txt') as $line){
    $query .= "('".$line."'),";
}
echo "INSERT INTO table VALUES " . rtrim($query,',');
于 2011-07-23T23:49:54.017 に答える
1

LOAD DATA INFILE は、この特定のタスクにより適しています: http://dev.mysql.com/doc/refman/5.1/en/load-data.html

于 2011-07-23T23:56:11.100 に答える