我不知道我在这里做错了什么。执行以下查询时,我收到以下错误:
SQLSTATE [HY093]:参数号无效:绑定变量数 与令牌数量不匹配
这是我的疑问:
SELECT id, recipe_name, ingredients, directions, user_id, category_id, country_id, name, type, size FROM recipes WHERE user_id =:user_id LIMIT:per_page OFFSET:pagination_offset
以下是剧本:
$page = !empty($_GET['page']) ? (int)$_GET['page'] : 1;
$per_page = 3;
$total_count = $this->countAll($iId); // which is 9 at this point
$pagination = new Pagination($page, $per_page, $total_count);
$pagination_offset = $pagination->offset();
$sWhereClause = "WHERE user_id =:user_id ";
$sLimitClause = "LIMIT:per_page ";
$sOffsetClause = "OFFSET:pagination_offset " ;
$aBinding = array (
':user_id' => $iUserId,
':per_page' => (int)$per_page,
':pagination_offset' => (int)$pagination_offset,
);
$sql = "
SELECT
*
FROM
recipes
" . $sWhereClause . "
" . $sLimitClause . "
" . $sOffsetClause . "
";
try{
$var = $this->db->prepare($sql);
$var->execute($binding);
return $var->fetchAll(PDO::FETCH_ASSOC);
} catch (Exception $ex) {
die($ex->getMessage());
}
感谢您的帮助!
答案 0 :(得分:0)
您在数组$aBinding
中定义绑定,然后将$binding
发送到execute
。只要一致地使用相同的变量,你应该没问题:
$var->execute($aBinding);