我想将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]:语法错误或访问冲突:1064 SQL语法中有错误;检查与MySQL服务器版本对应的手册,以便在第2行“450”附近使用正确的语法
注意:如果我将450直接放入查询中,它可以正常工作。
在我看来,问题是它正在将字符串读作字符串'450'而不是int 450.我尝试用PDO::PARAM_INT
解决这个问题 - 没有帮助。
我使用(int)$sql_offset
和int_val($sql_offset)
解析了值,但没有帮助。意思是,我仍然收到相同的错误消息。
问题:我是对的吗?是作为字符串看到的问题?如果是这样,我该如何解决? 或者这里有不同的问题吗?
答案 0 :(得分:0)
尝试解析int
中的值,然后检查:
$sql_offset = (int)(isset($_GET['offset']) ? $_GET['offset'] : 0);