【问题标题】:search function in Fat Free framework through SQL通过 SQL 在 Fat Free 框架中搜索功能
【发布时间】:2017-04-28 22:20:24
【问题描述】:

我正在尝试创建一个搜索功能,用户可以在其中键入以搜索数据库并返回任何匹配项。我在将用户输入链接到 SQL 查询时遇到问题。

这里的问题是 POST.search 被视为一个字符串,我希望它是用户输入。

我已经尝试过这种方式,但 $db 和 $f3 没有被识别 -

 $db->exec(
'SELECT * FROM table WHERE search=?',
$f3->get('POST.search')
);

这是我的代码 -

在模型中 - 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 无法识别的方式工作?

【问题讨论】:

    标签: php sql fat-free-framework


    【解决方案1】:

    可能是错误的方法语法,见https://fatfreeframework.com/3.6/sql#exec

    应该是:

    $db->exec('SELECT * FROM table WHERE search = ?',
      array(1 => $f3->get('POST.search'))
    );
    

    对于喜欢:

    $db->exec('SELECT * FROM table WHERE search LIKE ?',
      array(1 => '%'.$f3->get('POST.search').'%')
    );
    

    【讨论】:

    • 问题是我得到了一个未定义的 db 和 f3 变量。我使用了 DB\SQL\Mapper 和公共构造。见上面我已经更新了。也许我没有正确定义数据库?
    • 因为这只是一个例子,你当然需要自己解析 $db 和 $f3 ......看起来你在 $this->db 和 $this->f3 得到了它们?!? !?????
    猜你喜欢
    • 1970-01-01
    • 2012-05-08
    • 1970-01-01
    • 2014-03-02
    • 1970-01-01
    • 1970-01-01
    • 2020-02-17
    • 2015-10-30
    • 1970-01-01
    相关资源
    最近更新 更多