簡體   English   中英

動態SQL查詢PHP與

[英]dynamic sql query php with AND

我有一些SQL代碼:

    $id = "2000";
    $model = $_GET["model"]

    $result = mysql_query("SELECT
    Left(Right(Base.inputs.Data_inf,4),3) As 'Datas',
    count(Base.Data.Data_ID) As `U_Count`
    FROM
        Base.Data
    WHERE
        Product = '$id'
        AND model in ('a','b','c')
    GROUP BY ");

我想使AND部分成為動態查詢。 像這樣:

$m= $model;
switch ($m)
{
    case "basic":
        $m = "AND model in ('a','b','c')";
        break;

    case "upgrade":
        $m = "AND model in ('d','e','f')";
        break;

    default:
        $m = "AND model in ('a','b','c')";
}

我在查詢中放入$ m,但它不起作用:

WHERE
      Product = '$id'
      '$m'

任何建議將不勝感激。

您應該使用OR運算符而不是AND ,或者最好使用IN語句。 因為我猜模型不能同時等於ab ,所以這是不可能的,因此代碼的一部分應如下所示:

$m = " AND model in ('a','b','c')";

編輯:您可以簡化您的代碼,像這樣:

$id = "2000";
$model = $_GET["model"]



$m= $model;
switch ($m)
{
    case "upgrade":
    $mIN = "'d','e','c'";
        break;

    case "basic":
    default:
    $mIN = "'a','b','c'";
        break;
}


$result = mysql_query("SELECT
Left(Right(Base.inputs.Data_inf,4),3) As 'Datas',
count(Base.Data.Data_ID) As `U_Count`
FROM
    Base.Data
WHERE
    Product = '$id'
    AND model in ($mIn)
GROUP BY ");

刪除$ m附近的報價。 另外,添加空格並用正確的條件替換AND:

$m= $model;
switch ($m)
{
    case "basic":
        $m = " AND model in ('a','b','c') ";
        break;

    case "upgrade":
        $m = " AND model in ('d','e','f') ";
        break;

    default:
        $m = " AND model in ('a','b','c') ";
}

然后執行:

$result = mysql_query("SELECT
Left(Right(Base.inputs.Data_inf,4),3) As 'Datas',
count(Base.Data.Data_ID) As `U_Count`
FROM
    Base.Data
WHERE
    Product = '$id'
    $m ");

您也可以在傳遞SQL之前將其創建為字符串。 如果還可以更輕松地在運行查詢之前對其進行調試。

    $querytop = "SELECT
        Left(Right(Base.inputs.Data_inf,4),3) As 'Datas',
        count(Base.Data.Data_ID) As `U_Count`
        FROM
            Base.Data
        WHERE
            Product = '$id'";

    $m= $model;
    switch ($m)
    {
        case "basic":
            $m = " AND model = 'a'
        AND model = 'b'
        AND model = 'c' ";
            break;

        case "upgrade":
            $m = " AND model = 'd'
        AND model = 'e'
        AND model = 'f' ";
            break;

        default:
            $m = " AND model = 'a'
        AND model = 'b'
        AND model = 'c' ";
    }        
    $sqlquery = $querytop . $m;
    $result = mysql_query("$sqlquery");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM