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

Php 尝试使用foreach获取行中的字段,php,mysql,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_

我正在尝试编写一个简单的脚本,它遍历一个文件(名称列表),并使用每一行(名称)生成一个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\u 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);
    }
}

不要在循环中执行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);
    }
}

designer.txt的格式如何?为什么在
explode()
中使用管道
“|”
作为分隔符?您不应该对Windows文本文件使用
\n
(或
\r\n
)?
print\r($linearray)的输出是什么?呜。我没有注意到这一点,我从另一个代码中提取了这一行,该代码用于一个包含| as空格的文件。我觉得很难受:)谢谢你注意到我,这就成功了!谢谢。好的:)不过,请阅读戈登姆对你说的话。设计器中不应该有任何双引号(“)。txt
designer.txt
的格式如何?为什么要使用管道
“|”
作为
explode()
中的分隔符?你不应该使用
\n
(或
\r\n
作为Windows文本文件的分隔符)“
print\r($linearray);
”的输出是什么?呜呜。我没有注意到,我从另一个包含| as space的文件的代码中提取了这一行。我感觉到这样一个noob:)为注意到我而欢呼,这就成功了!谢谢。好的:)不过,请阅读GordonM对你说的话。designer.txt中不应该有任何双引号(“)