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

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

最佳答案

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

关于php - 尝试使用 foreach 获取一行中的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8516938/

相关文章:

PHP 输出数组到 SELECT mysql

mysql - 左/右连接性能

mysql - 使用列的子集将 CSV 文件读入 MySQL

java - 如何使用 Hibernate eqOrIsNull()

mysql - 在 mysql 中重命名具有外键约束的列 - 无论如何都可以使其更容易?

mysql - 查询在特定时间后插入行

php - 格式化一个数字,在 php 中保持其符号

php - 插入时MySQL语法错误

javascript - 图像上传不起作用(Froala 编辑器)

javascript - 在源代码中隐藏/混淆 Javascript 变量