在我的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的插入值?我做得对吗?
答案 0 :(得分:2)
基本上,您需要在绑定时使用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);