尝试使用foreach获取行中的字段

时间:2011-12-15 08:10:10

标签: php mysql

我正在尝试编写一个遍历文件(名称列表)的简单脚本,并使用每一行(名称)生成一个sql查询来获取该名称的id。

$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只在最后一行执行?

1 个答案:

答案 0 :(得分: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);
    }
}