php - 在 Mysql 查询中使用数组值

标签 php mysql sql arrays

我有一个查询要根据设置的参数选择一个有限的结果:

$query = $this->db->query ("
    SELECT 
        p.product_id, 
        p.quantity 
    FROM {$this->prefix}product p 
    LEFT JOIN {$this->prefix}product_to_category pc 
        ON (p.product_id = pc.product_id) 
    WHERE pc.category_id = '3' 
    AND p.status = '1' 
    ORDER BY p.quantity DESC 
    LIMIT 0, 4");

这将返回库存数量最多的 4 种产品,其中产品的 category_id = 3。

我想让它使用一组类别 ID,而不是静态的。即:

$categories = array(2, 6, 22, 33, 34, 83, 220, 222, 886, 897);

这可能吗?

最佳答案

您可以将数组转换为字符串并在查询中使用它。请注意,以下假定 $categories 已经安全并且不会包含恶意输入。如果不是这种情况,您将需要清理输入。

$categoriesClause = implode(",",$categories);

$query = $this->db->query ("
    SELECT 
        p.product_id, 
        p.quantity 
    FROM {$this->prefix}product p 
    LEFT JOIN {$this->prefix}product_to_category pc 
        ON (p.product_id = pc.product_id) 
    WHERE pc.category_id IN ($categoriesClause)
    AND p.status = '1' 
    ORDER BY p.quantity DESC 
    LIMIT 0, 4");

关于php - 在 Mysql 查询中使用数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18917235/

相关文章:

mysql - 制作多类别项目数据库结构

php - 将 php 数组值用于带有内爆函数的 mysql 插入查询

php pdo mysql 不会返回带引号的文本

c++ - 我如何在 C++ 中使用 mysql?

PHP MVC 在发布时添加到数组

mysql - 此准备好的Update SQL查询中的错误在哪里?

SQL Server窗口函数: can you do a ROW BETWEEN type construct?

sql - Oracle SQL 中查找表中是否存在一个或多个重复项的最快方法是什么?

PHP PDO - 将数组用于 SELECT SQL 语句

php - 当使用 PHP 代码填充选择函数时,HTML 表单丢失函数