[英]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
語句。 因為我猜模型不能同時等於a
和b
,所以這是不可能的,因此代碼的一部分應如下所示:
$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.