简体   繁体   English

PHP Phalcon Framework如何使用phql AND modelsManager防止转义数?

[英]PHP Phalcon Framework how to prevent escape number using phql AND modelsManager?

$phql = 'SELECT id,username,email FROM Users WHERE active = :active: LIMIT :offset:, :limit:';
$users = $this->modelsManager->executeQuery($phql, array('active' => 'Y', 'offset' => 100, 'limit' => 10));
//But Generates the error SQL statement
//SELECT `users`.`id` AS `id`, `users`.`username` AS `username`, `users`.`email` AS `email` FROM `users` WHERE `users`.`active` = 'Y' LIMIT '10' OFFSET '100' 

ANY one help me ? 有人帮我吗? just using $this->modelsManager...,whith $phql to bind numeric parameters. 只需使用$ this-> modelsManager ...,用$ phql绑定数字参数。

I haven't had the chance to test it out, but from the PHQL , modelsManager , and Query documentation, it seems that you can enforce it by creating a query rather than executing it straight away, and then executing it with the specific types you want: 我还没有机会对其进行测试,但是从PHQLmodelsManagerQuery文档看来,您可以通过创建查询而不是立即执行查询,然后使用您所指定的特定类型执行查询来实施它想:

// Create the query
$phql = 'SELECT id,username,email FROM Users WHERE active = :active: LIMIT :offset:, :limit:';
$query = $this->modelsManager->createQuery($phql);

// Setup the values to bind
$values = array(
    'active' => 'Y',
    'offset' => 100,
    'limit'  => 10
);
// Setup the type for each value
$types = array(
    'active' => Phalcon\Db\Column::BIND_PARAM_STR,
    'offset' => Phalcon\Db\Column::BIND_PARAM_INT,
    'limit'  => Phalcon\Db\Column::BIND_PARAM_INT
);

// Execute the query
$users = $query->execute($values, $types);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM