2
我想將GET var傳遞到查詢中以設置OFFSET。PDO參數讀取爲字符串而不是int
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)
解析了數值並沒有幫助。意思是,我仍然收到相同的錯誤信息。
問題:我說得對嗎?它看到的是一個字符串的問題嗎?如果是這樣,我該如何解決?
或者這裏有不同的問題嗎?
嘗試此'$ main_query = 「SELECT * FROM訂單LIMIT:偏移,150」;' –
嘗試'$ result-> bindValue(':偏移',(int)$ sql_offset,PDO :: PARAM_INT);' –
您使用本地或模擬的預處理語句嗎? –