我正在尝试创建一个搜索功能,用户可以键入搜索数据库并返回任何匹配项。我在将用户输入链接到SQL查询时遇到问题。
这里的问题是POST.search被视为字符串,我希望它是用户输入。
我试过这种方式,但$ db和$ f3无法识别 -
$db->exec(
'SELECT * FROM table WHERE search=?',
$f3->get('POST.search')
);
这是我的代码 -
在Model - User.php
中class User extends DB\SQL\Mapper {
public function __construct(DB\SQL $db) {
parent::__construct($db,'table');
}
public function searchq() {
$search = ('POST.search');
$q="Select * table where name LIKE '$search'";
return $this->db->exec($q);
}
}
在用户控制器中:
public function search()
{
$user = new User($this->db);
$this->f3->set('table',$user->searchq($search));
$this->f3->set('view','search.htm');
}
如何让它以我的方式工作,或者我如何才能找到无法识别$ db和$ f3的方式?
答案 0 :(得分:0)
可能是错误的方法语法,请参阅https://fatfreeframework.com/3.6/sql#exec
它应该是:
$db->exec('SELECT * FROM table WHERE search = ?',
array(1 => $f3->get('POST.search'))
);
和LIKE:
$db->exec('SELECT * FROM table WHERE search LIKE ?',
array(1 => '%'.$f3->get('POST.search').'%')
);