php - 用逗号和引号分隔 ID

标签 php sql

我得到了一组要在 IN 语句 (sql) 中使用的 ID。然而,这只有在正确写入时才能完成,例如:IN ('12', '13', '14')

如何将一组 ID 更改为该格式?这意味着在每个数字周围添加引号,并在每个数字后用引号括起一个逗号,数组中的最后一个除外。

我的代码:

$parent             = "SELECT * FROM `web_categories` WHERE `parent_id` = 13 AND published = 1";
$parentcon      = $conn->query($parent);
$parentcr           = array();
while ($parentcr[] = $parentcon->fetch_array());

foreach($parentcr as $parentid){
    if($parentid['id'] != ''){
        $parentoverzicht .= "".$parentid['id']."";  
    }
}

我以后想这样使用它:

$project = "SELECT * FROM `web_content` WHERE `catid` IN ('".$parentoverzicht."') AND state = 1";

最佳答案

将此作为单个查询执行! SQL 引擎针对表的处理进行了各种优化,在代码中进行循环通常成本更高。

对于您的目的来说,显而易见的查询是:

SELECT wc.*
FROM web_content wc
WHERE wc.catid IN (SELECT cat.id
                   FROM web_categories cat
                   WHERE cat.parent_id = 13 AND cat.published = 1
                  ) AND
      wc.state = 1;

关于php - 用逗号和引号分隔 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39327712/

相关文章:

c# - 具有无限参数的参数化 SQL 查询

python - 如何改进这个多对多 Django ORM 查询和模型集?

SQL 从多个查询中返回匹配项

php - 使用php从android访问数据库获取 "<HTML>"而不是查询结果

php - 找不到 Sublime Text 3 Sublimelinter phplint 和 php?

php - 使用php从两列mysql csv获取csv值

mysql - SQL查询只选择孙子

mysql - 根据一定条件SQL计算各组贡献百分比

javascript - 将项目 ID 从卡片传递到模态

php - 简单的 Codeigniter 表单验证