嗨,大家好,我试图在PHP中执行多个条件搜索,所以我想使用foreach根据用户选择的数量自动添加AND语句。下面是我的代码:
$sub = trim(ucfirst($_POST['sub']));
$any = trim(ucfirst($_POST['key']));
$count = 0;
$query = "SELECT P.PTY_ID, P.PTY_UNITNUM, P.PTY_STREET, P.PTY_POSTCODE, P.PTY_SUBURB,P.PTY_CITY, T.P_TYPE_NAME,
L.SALE_PRICE, L.AVAILABILITY, R.PTY_ID,F.FEAT_ID, R.FEAT_ID,F.FEAT_NAME
FROM PROPERTY_TYPE T, PROPERTY P, LISTINGS L, PROPERTY_FEATURE R, FEATURE F
WHERE P.P_TYPE_ID = T.P_TYPE_ID(+)
AND P.PTY_ID = L.PTY_ID(+)
AND R.FEAT_ID= F.FEAT_ID
AND R.PTY_ID= P.PTY_ID
AND REGEXP_LIKE (P.PTY_SUBURB,'$sub')
AND REGEXP_LIKE (P.PTY_STREET||P.PTY_POSTCODE,'$any')
OR(
".foreach ($_POST["check"] as $feat_id) {
if ($count != 0)
echo "AND";
echo "FEAT_ID = ' . $feat_id . '";
$count++;
}.")";
$stmt = oci_parse($conn, $query);
oci_execute($stmt);
因此,在我的情况下,我想按郊区,某些邮政编码(例如邮政编码和街道名称)以及要素搜索属性。为了响应用户在多个功能上的选择,我尝试使用foreach循环来打印“ AND FEAT_ID =(发布的ID)”,但是在“ OR”部分之后直到查询结束时出现语法错误,表示需要一些表达。目前,我在PHP学习中还很陌生。有人可以为我指出正确的格式吗?干杯(:
我不确定100%您的问题是什么,但我会稍微清理一下。同样,这是我的编码风格,因此其他人可能仍然认为可以改进。
$sub = trim(ucfirst($_POST['sub']));
$any = trim(ucfirst($_POST['key']));
$count = 0;
$or = "";
if (isset($_POST["check"]))
{
$featArray = [];
foreach ($_POST["check"] as $feat_id)
{
array_push($featArray, "FEAT_ID = " .$feat_id);
}
$or = implode(' AND ', $featArray);
}
$query = "SELECT P.PTY_ID, P.PTY_UNITNUM, P.PTY_STREET, P.PTY_POSTCODE, P.PTY_SUBURB,P.PTY_CITY, T.P_TYPE_NAME,
L.SALE_PRICE, L.AVAILABILITY, R.PTY_ID,F.FEAT_ID, R.FEAT_ID,F.FEAT_NAME
FROM PROPERTY_TYPE T, PROPERTY P, LISTINGS L, PROPERTY_FEATURE R, FEATURE F
WHERE P.P_TYPE_ID = T.P_TYPE_ID(+)
AND P.PTY_ID = L.PTY_ID(+)
AND R.FEAT_ID= F.FEAT_ID
AND R.PTY_ID= P.PTY_ID
AND REGEXP_LIKE (P.PTY_SUBURB, '$sub')
AND REGEXP_LIKE (P.PTY_STREET||P.PTY_POSTCODE, '$any')";
if ($or != null)
$query .= " OR (" . $or . ")";
$stmt = oci_parse($conn, $query);
oci_execute($stmt);
我还要检查您的$ _POST ['sub']和$ _POST ['key']或设置。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句