【发布时间】:2016-10-18 02:14:00
【问题描述】:
大家好,我正在尝试在我的 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 = (posted id)”,但在“OR”部分直到查询结束时出现语法错误, 说一些表达式是预期的。 我目前在 PHP 学习方面还很陌生。有人可以为我指出正确的格式吗?干杯(:
【问题讨论】:
-
您应该学会使用正确的显式
JOIN语法,并且从不将已弃用的(+)语法用于外连接。 -
好的,干杯@GordonLinoff