2011-12-15 32 views
1

我試圖寫一個簡單的腳本,越過一個文件(名單)連續獲取一個字段,將使用每行(名稱),以產生一個SQL查詢來獲取的,該ID名稱。嘗試使用的foreach

$linearray = explode("|", file_get_contents('designer.txt')); 
foreach ($linearray as $line) { 

$result = mysql_query("SELECT term_id FROM wp_terms WHERE slug = '{$line}'"); 
$row = mysql_fetch_assoc($result); 
echo $row['term_id']; 

} 

現在,由於某種原因,我只能得到最後一個詞term_id。儘管如果我試圖迴應這條線,它會起作用。

任何想法,爲什麼SQL正處於最後一行只執行?

+0

`designer.txt`如何格式化? – 2011-12-15 08:13:49

+1

每行包含一個slu 012 – eek 2011-12-15 08:14:55

回答

4

永遠不要在循環中執行SQL查詢!一個SQL查詢是一個昂貴的操作,你應該把它們保持在最低限度。建立查詢以一次獲取所有數據會更好。

$lineArray = array_filter ($lineArray, 'mysql_real_escape_string'); // Protect against SQL injection 
$slugList = implode (', ', $lineArray); 
$sql = 'SELECT term_id FROM wp_terms WHERE slug IN (' . $slugList . ')'; 

if ($result = mysql_query ($sql)) 
{ 
    while ($row = mysql_fetch_assoc ($result)) 
    { 
     var_dump ($row); 
    } 
}