簡體   English   中英

SQL 查詢有什么問題?

[英]What's wrong within SQL query?

我正在使用此查詢來獲取行范圍,例如 0-5 ,但我收到一條錯誤消息。

這是代碼:

if(isset($_GET['page']) && isset($_GET['per'])){        
    $per = $_GET['per'];
    $pageNumber = $_GET['page'];
    $from = ($pageNumber * $per) - $per;
    $results = $pdo->prepare('SELECT * FROM users LIMIT :sfrom , :sto');
    $results->execute(array('sfrom' => $from , 'sto' => $per));
}

我收到以下錯誤:

致命錯誤:未捕獲的異常 'PDOException' 帶有消息 'SQLSTATE[42000]:語法錯誤或訪問沖突:1064 您的 SQL 語法有錯誤; 檢查與您的 MariaDB 服務器版本相對應的手冊,了解在 ''5' , '5'' 附近使用的正確語法

我認為這是因為$from$per是作為字符串插入的,或者我試圖使用(int)$from , (int)$per將它們轉換為 int 但仍然有相同的錯誤

傳遞的值必須是整數,但轉換它們是不夠的。

使用PDOStatement:: bindParam指示PDO綁定參數的類型為整數

然后調用PDOStatement:: execute作為最后一步(不帶參數)。

$results = $pdo->prepare('SELECT * FROM users LIMIT :sfrom , :sto');
$results->bindParam(':sfrom', (int)$from, PDO::PARAM_INT );
$results->bindParam(':sto',   (int)$to,   PDO::PARAM_INT );
$results->execute();

http://php.net/manual/en/pdostatement.bindparam.php

$per$from設置為數字字符串是完全可以的。 確保您沒有將"'5'"作為值傳遞。 "'5'"int結果為0 嘗試

// remove " and ' then cast to int
$yourNumber = (int) str_replace(['"', "'"], '', $yourInput);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM