在SQL语句的limit子句中使用PDO插入值?

时间:2011-06-03 01:52:44

标签: php sql pdo

在我的PDO实现中,我试图在SQL语句的limit子句中使用insert值:

$sql = "SELECT * FROM table ORDER BY datetime DESC LIMIT :limit";
$params = array(":limit" => 5);
$query = $dbh->prepare($sql);
$query->execute($params);
$result = $query->fetchall(PDO::FETCH_ASSOC);

$params$query已正确返回,但$result为空。

运行print_r($query->errorInfo);后,我得到以下内容:

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 ''5'' at line 1

如何在此查询中使用PDO的插入值?我做得对吗?

2 个答案:

答案 0 :(得分:2)

请参阅PHP PDO bindValue in LIMIT

基本上,您需要在绑定时使用intval()将限制值强制转换为int。

答案 1 :(得分:-1)

您无法将变量绑定到LIMIT子句的操作数(确切地说,它可能取决于您的数据库系统供应商)。相反,只使用字符串插值。 : - (

$limit = 5;
$sql = "SELECT * FROM table ORDER BY datetime DESC LIMIT $limit";
$stmt = $dbh->query($sql);
$result = $stmt->fetchall(PDO::FETCH_ASSOC);