【问题标题】:How to pass an integer to a query in CakePHP?如何将整数传递给 CakePHP 中的查询?
【发布时间】:2014-03-24 22:40:35
【问题描述】:

编辑1:这是not about LIMIT,这是关于传递一个整数。其他需要传递数字的功能是IN

编辑 2:我应该使用 PDO::PARAM_INT 吗?


当我这样做时:

$query .=  ' LIMIT ? , ? ';
$values [] =  $offset ;
$values [] = $rows ;

在这一行:

$db->fetchAll ( $query ,   $values);

而不是执行:

SELECT .......  LIMIT 0 ,  10;

它试图执行:

SELECT .......  LIMIT '0' ,  '10';

导致错误:错误代码:1064。您的 SQL 语法有错误;查看与您的 MySQL 服务器版本相对应的手册,了解在 ''0' ,'10'' 附近使用的正确语法


注意1。我知道limit in the $params array.有一个选项。

注2.有一个问题与here相关

注意 3. 我尝试过:$values [] = intval($offset)$values [] = (int)$offset,甚至是一个整数,例如:$values [] = 10

【问题讨论】:

  • @prix,谢谢,但这不是关于 LIMIT,我只是把它放在那里作为示例,但我有一些查询也需要传递整数。
  • 虽然我认为你应该使用准备好的语句,但如果你找不到其他可行的方法,你可以强制 $offset$rows 为 int,然后将它们连接到你的查询中,而不是而不是做一个准备好的陈述。虽然我不太喜欢这个解决方案,但只要确保 $offset 和 $rows 是整数,它应该是安全的。

标签: php cakephp pdo


【解决方案1】:

我不知道 Cake 但是在 PDO 中你应该both intvalPDO::PARAM_INT- 他们都不会单独使用。

在我的 PDO 包装器中,我修复了这个问题,允许第一个代码无错误地运行,但我怀疑你是否会为你的框架实现它而烦恼

【讨论】:

  • 稍后我会尝试PDO::PARAM_INT,如果可行,请告诉您。你的 PDO 包装器是什么?,你能展示一下吗?
  • 别费心让我知道 - 我已经知道它有效 :) 它是一个非常小的包装器,旨在通过扩展 PDOStatement 类 github.com/colshrapnel/thebestpdowrapper/blob/master/… 来解决这个问题 - 坦率地说,它确实我在上面告诉过你同样的事情 - 它转换为 int 使用 PARAM_INT 绑定,但自动执行
猜你喜欢
  • 2021-05-17
  • 1970-01-01
  • 2018-09-30
  • 2017-03-08
  • 2020-06-02
  • 2017-05-28
  • 1970-01-01
  • 1970-01-01
  • 2022-11-30
相关资源
最近更新 更多