Оператор Sql & quot; и «или» не работает правильно

Когда я запускаю этот код, кажется, что проблема с логическим значением and а также or операции:

$ne = News::find(['conditions' => 'title_md = "' . htmlspecialchars($_post['title_md']) . '"  OR alias = "'.$item->alias.'" AND id !=  ' . $id])->toArray();

Состояние внутри if(count($ne) < 1) возвращается true, но мне нужно получить false потому что идентификатор в настоящее время не берется.

0

Решение

Вот правильный запрос, использующий полный потенциал Phalcon ORM.

$ne = News::find([
'conditions' => '(title_md = :title: OR alias = :alias:) AND id != :id:',
'bind' => [
'title' => $_POST['title_md'],
'alias' => $item->alias,
'id' => $id,
]
])->toArray();

Как уже упоминалось, ребята, вы должны быть более осторожны при привязке параметров, чтобы избежать внедрения SQL. Больше примеров и инструкций в документах: https://docs.phalconphp.com/zh/3.2/db-models#binding-parameters

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]