我终于得到了jQuery AutoComplete与CakePHP一起工作。我最初的计划是建立一个分组/分类清单,如果用户输入了学校的名称,它将显示该学校的所有节目,如果他们输入节目的名称,它会向学校显示它来自哪个学校。CakePHP SQL准备语句
我发现使用Cake语法非常难以实现,所以我决定连接学校的名称和节目的名称,然后将该字符串与$项进行比较。我意识到VirtualFields不会跨多个模型工作中使用准备好的语句,语法本身评估细所以通过,但我得到这个SQL错误:
"Column not found: 1054 Unknown column 'romeo and juliet' in 'where clause'"
所以它似乎通过长期优良而是将其比作列名比纪录。这里是我的自动完成功能与准备语句的语法:
public function autoComplete() {
$this->autoRender = false;
$term = $_GET['term'];
$shownames = $this->Order->Show->query(
'SELECT CONCAT(sm_schools.title, " - ", sm_shows.title)
FROM sm_shows
LEFT JOIN sm_schools
ON sm_shows.school_id = sm_schools.id
WHERE CONCAT(sm_schools.title, " - ", sm_shows.title) LIKE ' .$term
);
echo json_encode($this->_encode($shownames));
}
任何帮助将是伟大的。 谢谢
您发布的代码不是准备好的声明。请参阅http://book.cakephp.org/2.0/en/models/retrieving-your-data.html#prepared-statements您正在使用的内容易受SQL注入攻击。查看错误时生成的MySQL查询是什么? – Kai
以下是生成的查询(对可怕的格式化表示歉意) SQL查询:SELECT CONCAT(sm_schools.title,“ - ”,sm_shows.title)FROM sm_showsLEFT JOIN sm_schoolson sm_shows.school_id = sm_schools.idWHERE CONCAT(sm_schools.title ,“ - ”,sm_shows.title)LIKE罗密欧与朱丽叶 – iKettles