0

大家好,我有一个在 cakephp 中开发的网站,我在 pdo 中有一个查询,我想在其中插入一个限制值。我尝试过这种模式:

$max_result = 10;
$search = "test";
$product_alias = $this->ProductAlias->query(
'SELECT DISTINCT * 
   FROM product_aliases 
   WHERE product_aliases.alias 
   LIKE :search LIMIT :limit_search'
 ,array('search' => '%'.$search.'%','limit_search' => intval(trim($max_result)))
);

我也试过:

...
WHERE product_aliases.alias 
  LIKE :search 
  LIMIT :limit_search'
,array('search' => '%'.$search.'%','limit_search' => intval($max_result)));

...

WHERE product_aliases.alias 
  LIKE :search 
  LIMIT :limit_search'
,array('search' => '%'.$search.'%','limit_search' => $max_result));

但总是给我这个错误: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '10' at line 1

我已经看到有绑定,但我不知道如何应用于这种情况。有什么解决办法吗?

4

2 回答 2

1

不确定 CakePHP API,但你可以试试这个:

$product_alias = $this->ProductAlias->prepare('SELECT DISTINCT * 
    FROM product_aliases 
    WHERE product_aliases.alias LIKE :search 
    LIMIT :limit_search');
$product_alias->bindParam( 'search', '%'.$search.'%', PDO::PARAM_STR );
$product_alias->bindParam( 'limit_search', (int) intval(trim($max_result)), PDO::PARAM_INT );

在检查 CakePHP 的文档时,他们也提供PDOStatement了 s:http ://api.cakephp.org/2.2/class-PDOStatement.html

于 2013-04-21T17:34:43.320 回答
0

不必做这一切。(你不应该这样做)。手动编写所有查询基本上会使整个框架无用。

阅读手册的这一部分检索数据

要在 CakePHP 中检索您的数据,请使用它;

$product_alias  = $this->ProductAlias->find('all', array(
    'conditions' => array(
        'ProductAlias.alias LIKE' => '%' . $search . '%',
    ),
    'limit' => $max_result
));
于 2013-04-21T18:17:17.377 回答