<分区>
我想将 GET var 传递到查询中以设置 OFFSET。
try {
$sql_offset = isset($_GET['offset']) ? $_GET['offset'] : 0;
$main_query = "SELECT * FROM Orders
LIMIT 150 OFFSET :offset";
$result = $db->prepare($main_query);
$result->bindParam(':offset', $sql_offset, PDO::PARAM_INT);
$result->execute();
} catch (Exception $e) {
$error = $e->getMessage();
echo "<h2>".$error."</h2>";
die();
}
查询失败,收到的错误信息为:
SQLSTATE[42000]: Syntax error or access violation: 1064 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 ''450'' at line 2
注意:如果我将 450 直接放入查询中,它就可以正常工作。
在我看来,问题在于它将参数读取为字符串“450”而不是 int 450。我尝试用 PDO::PARAM_INT
解决这个问题 - 没有帮助。
我用 (int)$sql_offset
和 int_val($sql_offset)
解析了值,但没有帮助。意思是,我仍然收到相同的错误消息。
问题:我说得对吗?它被视为字符串的问题是什么?如果是这样,我该如何解决?
还是这里有其他问题?