将参数作为整数传递给限制

时间:2019-10-27 04:02:07

标签: php mysql pdo

我一直在PHP应用程序中使用参数进行MySQL查询。

public function getAllPostsForCategoryFrom($CategoryID, $StartPos)
{
    $sql = "SELECT * FROM Post WHERE CategoryID = :CategoryID ORDER BY PostID DESC LIMIT :StartPos, 5";
    $query = $this->db->prepare($sql);
    $parameters = array(':CategoryID' => $CategoryID, ':StartPos' => $StartPos);
    $query->execute($parameters);
    return $query->fetchAll();
}

在上面的函数中,它似乎将$ StartPos作为一个字符串传递,这只会引发错误

  

错误代码:1064。您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第1行的“ 0”,“ 5”附近使用

我也尝试过将传递的值转换为整数,但是,MySQL似乎不喜欢在限制范围内接受转换/转换。

CAST(:StartPos AS UNSIGNED);

我知道这样的绑定参数:

$sql = SELECT * FROM tbl_news ORDER BY date DESC LIMIT :start, :rows";
$q = $db->prepare($sql);
$q->bindParam(':start', $start, PDO::PARAM_INT);
$q->bindParam(':rows',$rows, PDO::PARAM_INT);

但是,我不确定如何使用我一直使用的参数来做到这一点。将不胜感激任何有关如何获取作为整数而不是字符串传递值的指针!

**编辑:**我应该提到这是AWS上与MySQL兼容的Aurora

0 个答案:

没有答案