我检查了这个: 如何将 pdo 的准备好的语句用于 order by 和 limit 子句?
但它没有谈论“?” 占位符。
我有这样的声明:
$stmt=$connect->prepare("SELECT * FROM users LIMIT ?");
$stmt->execute(array($max_num));
但它不起作用,因为 LIMIT 数字首先不应该用括号括起来。
我怎么解决这个问题?提前致谢。
我检查了这个: 如何将 pdo 的准备好的语句用于 order by 和 limit 子句?
但它没有谈论“?” 占位符。
我有这样的声明:
$stmt=$connect->prepare("SELECT * FROM users LIMIT ?");
$stmt->execute(array($max_num));
但它不起作用,因为 LIMIT 数字首先不应该用括号括起来。
我怎么解决这个问题?提前致谢。
$stmt=$connect->prepare("SELECT * FROM users LIMIT ?");
$stmt->execute(array($max_num));
上面的查询不起作用,因为参数需要一个整数,并且当您以上述方式绑定它时,该值绑定到一个字符串。
因此,解释查询采用以下形式:
select * from users limit '1'
您应该通过以下方式修改您的查询:
$stmt->bindValue(1,1,PDO::PARAM_INT);
$stmt->execute();
$connect->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$stmt=$connect->prepare("SELECT * FROM users LIMIT ?");
$stmt->execute(array((int)$max_num));
尝试
$stmt->execute(array((int)$max_num));
或者如果这不起作用,请尝试
$stmt->bindParam(1, (int)$max, PDO::PARAM_INT);
$stmt->execute();
看起来 PDO 不理解 LIMIT 以知道它是一个数值。你可能不得不忍受
$connect->query("SELECT * FROM users LIMIT $max_num");