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 のドキュメントを確認すると、 http PDOStatement: //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 に答える