Ошибка разбора: синтаксическая ошибка, неожиданный T_IF - PullRequest
1 голос
/ 21 декабря 2011
$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

Ответы [ 4 ]

3 голосов
/ 21 декабря 2011

Удалить. (точка) перед оператором if. Поскольку сам оператор if не является строкой, его просто нельзя объединить.

2 голосов
/ 21 декабря 2011

Не делай этого:

. if (condition) { value_if_true; }

Вместо этого сделайте это:

. (condition ? value_if_true : value_if_false)
1 голос
/ 21 декабря 2011

if может быть только утверждением: вы используете его как выражение . Он ничего не возвращает, и его нельзя использовать в другом выражении.

Однако вы можете использовать троичный оператор, чтобы сделать именно это:

. ( isset ($_POST['idSearch']) ?  " WHERE a.id = " . $_POST['idSearch'] : '') 

Это говорит "если установлено $_POST['idSearch'], добавьте эту строку, в противном случае добавьте пустую строку.

Обратите внимание, что вы действительно должны взглянуть на свой код, потому что в самом коде, который я выложил выше, есть явная инъекция SQL. Любой может выполнить произвольный код в вашей базе данных. Обязательно очистите ваш ввод и, желательно, примите подготовленные операторы и параметризованные запросы, чтобы сделать ваш код более безопасным.

0 голосов
/ 21 декабря 2011

Полагаю, вы хотите превратить это в троичного оператора зла :

. (count ...)
. (isset($_POST['idSearch']) ? ' WHERE a.id = ' . $_POST['idSearch'] : '')
. "\n ORDER BY" ...
...