php - 在 mysql 中使用 php 数组查询

标签 php mysql arrays

我想用多个过滤器获取内容,现在只有一个。 例如:

SELECT * FROM Table1 WHERE status=true AND category = 'Camera' AND model = 'Samsung' AND type = 'New'

我想为它创建一个数组。但由于我是这方面的新手,所以没有获得领先地位。

function getAllRequests($filter){
if(empty($filter)){
    $addfilter = '';    
    }else{
    $addfilter = 'AND cat_id=' . $filter;
    }
}

$sql = 'SELECT * FROM Table1 WHERE status=true' . $filter;

我们将不胜感激。

最佳答案

这将使您更接近解决方案,尽管它不会替换查询中的 cat_id,这肯定是错误的 - 尽管如果没有数组结构就不可能做太多:

function getAllRequests($filter)
{
    $addfilter="";
    if(!empty($filter))
    {
        foreach($filter as $val)
        {
            $addfilter. = ' AND cat_id=' . $val .'\'';
        }
    }
    return $addFilter;
}

$myFilters=getAllRequests($filter);
$sql = 'SELECT * FROM Table1 WHERE status=true' . $myFilters;

另一方面,如果你的数组是这样构造的:

array{ category => camera, model => samsung); // etc

您可以使用以下内容:

function getAllRequests($filter)
{
    $addfilter="";
    if(!empty($filter))
    {
        foreach($filter as $key => $val)
        {
            $addfilter. = " AND `$key` = '$val'";
        }
    }
    return $addFilter;
}

$myFilters=getAllRequests($filter);
$sql = 'SELECT * FROM Table1 WHERE status=true' . $myFilters;

编辑:您可以按以下方式遍历所有过滤器:

function getAllRequests()
{
    $addfilter="";
    if(!empty($_REQUEST))
    {
    foreach($_REQUEST as $key => $val)
    {
        $addfilter. = " AND `$key` = '$val'";
    }
    }
    return $addFilter;
}

$myFilters=getAllRequests();
$sql = 'SELECT * FROM Table1 WHERE status=true' . $myFilters;

您不需要传递 $_REQUEST(它适用于 GET 和 POST),因为它已经是超全局的。

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

相关文章:

javascript - 如何在node.js中访问数组的特定索引

c - 没有 malloc 但有另一种方法的链表

php - 如何获取套接字类型?

mysql - 如何在 MySQL 中为数据库起别名?

MySQL - 如何在名称后面显示昵称(如果有,则只是名称)?

MySQL 和时区

java - 使用多个 if 值优化数组结果

php - 无法在 pdo 语句中连接 sql

php - Yii2 中的 model->attributes 总是有 NULL 值

php - PHP 中的复杂查询