2011-07-23 99 views
0

我會問,因爲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
foreach ($lines AS $line) 
{ 
    $query[] = "($line)"; 
} 

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

是如何與implode做到這一點,但我認爲AlienWebguy的更好

+0

的同義詞,這就是我正在尋找的東西。 – genesis

+0

+1,這比將字符串串起然後修剪它要乾淨得多。但是,它仍然可以改進。 'file()'已經返回一個數組,所以你可以'echo'INSERT INTO TABLE VALUES('。join(')(',file('file.txt'))。');''(假設你知道文件中至少有一行)。 –

+0

+1我認爲你的更好;) – AlienWebguy

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); 
+0

我認爲這正是我正在尋找的:p – genesis

+0

如何在更多數據的情況下使用它?例如2個DB字段? – genesis

+0

zerkms這是一些漂亮性感的代碼人。 +1。 – AlienWebguy

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

好吧,我也使用過這個,我忘了它,但:)謝謝你提醒它! +1 – genesis

+0

我更喜歡這個,因爲它更具可讀性,當你在6個月的時間內再次觀看時,將更容易計算出正在發生的事情。聰明的代碼是好的,可讀的代碼更好,更聰明,可讀的代碼是最好的:)。我有足夠的非明顯的代碼,特別是我自己的!無論如何,+1 – vascowhite

+0

我不同意,內爆的方法是更清晰的閱讀,更優雅,更高效。 –

相關問題