我试图编写一个简单的脚本,该脚本遍历一个文件(名称列表),并使用每一行(名称)生成一个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只在最后一行执行吗?
最佳答案
不要在循环中执行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);
}
}