错误SQLSTATE [HY093]:参数号无效:绑定变量数与令牌数不匹配

时间:2014-12-27 21:10:19

标签: mysql

我不知道我在这里做错了什么。执行以下查询时,我收到以下错误:

  

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());
    }

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您在数组$aBinding中定义绑定,然后将$binding发送到execute。只要一致地使用相同的变量,你应该没问题:

$var->execute($aBinding);