Phalcon PhP - 如何在带有参数的控制器内执行查询
Phalcon PhP - how to execute query inside a controller with parameters
我想知道如何在 phalcon 控制器中使用参数执行查询。
我的SQL查询:
SELECT a.*, getApplicationData(a.id) as json_data
FROM application a
INNER JOIN application_data d on d.application_id = a.id
WHERE a.form_id=1
AND d.firstname LIKE '%:searchQuery:%' ;
这是我尝试执行的方式(我在 Phalcon 的文档中找到它,但该示例不在控制器中)。
$applications = $this->db->query(
$sqlQuery,
array('searchQuery'=>$searchQuery)
)->fetchAll();
我知道既然你有 ORM,我不应该像这样查询数据库,但对于我正在处理的功能来说,它必须是这样的,这个查询是动态的。
我的问题是如何在查询中为 :searchQuery:
传递参数。
在此先感谢您的帮助。
你几乎答对了。您只需在绑定数组中添加百分比 (%)。
$sqlQuery = 'SELECT * FROM events WHERE title LIKE :searchQuery';
$applications = $this->db->query(
$sqlQuery,
array('searchQuery'=> '%' . $searchQuery . '%')
)->fetchAll();
另请注意我是如何在 $sqlQuery
中绑定 :searchQuery 的。它只使用单个 : 而不是包围参数。这是因为原始查询直接使用数据库连接,在我们的例子中是 PDO。
可以在此处找到更多示例:https://docs.phalconphp.com/en/latest/api/Phalcon_Db_Adapter_Pdo.html
我想知道如何在 phalcon 控制器中使用参数执行查询。
我的SQL查询:
SELECT a.*, getApplicationData(a.id) as json_data
FROM application a
INNER JOIN application_data d on d.application_id = a.id
WHERE a.form_id=1
AND d.firstname LIKE '%:searchQuery:%' ;
这是我尝试执行的方式(我在 Phalcon 的文档中找到它,但该示例不在控制器中)。
$applications = $this->db->query(
$sqlQuery,
array('searchQuery'=>$searchQuery)
)->fetchAll();
我知道既然你有 ORM,我不应该像这样查询数据库,但对于我正在处理的功能来说,它必须是这样的,这个查询是动态的。
我的问题是如何在查询中为 :searchQuery:
传递参数。
在此先感谢您的帮助。
你几乎答对了。您只需在绑定数组中添加百分比 (%)。
$sqlQuery = 'SELECT * FROM events WHERE title LIKE :searchQuery';
$applications = $this->db->query(
$sqlQuery,
array('searchQuery'=> '%' . $searchQuery . '%')
)->fetchAll();
另请注意我是如何在 $sqlQuery
中绑定 :searchQuery 的。它只使用单个 : 而不是包围参数。这是因为原始查询直接使用数据库连接,在我们的例子中是 PDO。
可以在此处找到更多示例:https://docs.phalconphp.com/en/latest/api/Phalcon_Db_Adapter_Pdo.html