$query = "SELECT a.*, cc.name AS category, dd.ezcity AS proploc, ee.name AS statename, ff.name AS cnname, ss.dealer_name AS propseller, u.name AS editor"
. "\n FROM #__ezrealty AS a"
. "\n LEFT JOIN #__ezrealty_catg AS cc ON cc.id = a.cid"
. "\n LEFT JOIN #__ezrealty_locality AS dd ON dd.id = a.locid"
. "\n LEFT JOIN #__ezrealty_state AS ee ON ee.id = a.stid"
. "\n LEFT JOIN #__ezrealty_country AS ff ON ff.id = a.cnid"
. "\n LEFT JOIN #__ezrealty_profile AS ss ON ss.mid = a.owner"
. "\n LEFT JOIN #__users AS u ON u.id = a.checked_out"
. ( count( $where ) ? "\n WHERE " . implode( ' AND ', $where ) : "")
. if ( isset ($_POST['idSearch']) )
. { " WHERE a.id = " . $_POST['idSearch'] ; }
. "\n ORDER BY ". $order
. "\n LIMIT $pageNav->limitstart, $pageNav->limit"
;
我在这里得到错误的语法:( ,,并且它会保持返回相同的错误意外T_IF
答案 0 :(得分:3)
删除。 (点)在if语句之前。因为if语句本身不是一个字符串,所以你不能将它连接起来。
答案 1 :(得分:2)
不要这样做:
. if (condition) { value_if_true; }
而是这样做:
. (condition ? value_if_true : value_if_false)
答案 2 :(得分:1)
if
只能是一个声明:您将其用作expression。它不返回任何内容,也不能在另一个语句中使用。
但是,您可以使用三元运算符来完成此操作:
. ( isset ($_POST['idSearch']) ? " WHERE a.id = " . $_POST['idSearch'] : '')
这表示“如果设置了$_POST['idSearch']
,请添加该字符串,否则添加空字符串。
请注意,您应该真正查看您的代码,因为在我上面发布的代码中有一个明显的SQL注入。任何人都可以在数据库上执行任意代码。确保清理您的输入,最好采用预准备语句和参数化查询,以使您的代码更安全。
答案 3 :(得分:0)
我相信你想把它变成 evil 三元运算符:
. (count ...)
. (isset($_POST['idSearch']) ? ' WHERE a.id = ' . $_POST['idSearch'] : '')
. "\n ORDER BY" ...