Когда я запускаю этот код, кажется, что проблема с логическим значением 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
потому что идентификатор в настоящее время не берется.
Вот правильный запрос, использующий полный потенциал 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
Других решений пока нет …