PDO错误代码为HY093,但绑定变量的数量与令牌的数量匹配


PDO error code HY093, yet number of bound variables does match the number of tokens

我有以下php函数,并检查了无数次。

我已经看了大约30个不同的问题关于HY903错误代码。然而,它们似乎都不适用。

我检查了列的数量,占位符的数量,我检查了拼写是否一致。我甚至在if(!is_null){}中包含了可能为空的值,但似乎没有什么可以改变这个错误。我一定是漏掉了一些小东西,可是我怎么也找不出是什么。

function add_page($title, $linkStub, $content,$gitTitle,$buttonLabel,$buttonLink,$buttonText,$buttonTarget)
{
    $sql = "INSERT INTO `pages`(
            `pageId`,
            `title`,
            `linkStub`,
            `content`,
            `gitTitle`,
            `buttonLabel`,
            `buttonLink`,
            `buttonText`,
            `buttonTarget`
            )
            VALUES (
            NULL ,
            :title ,
            :linkStub ,
            :content ,
            :gitTitle ,
            :buttonLabel ,
            :buttonLink,
            :buttonText,
            :buttonTarget
            )";
    $stmt = $this->db->prepare($sql);
    $stmt->bindParam(':title', $title, PDO::PARAM_STR, 100);
    $stmt->bindParam(':linkStub', $linkStub, PDO::PARAM_STR, 150);
    $stmt->bindParam(':content', $content, PDO::PARAM_STR);
    if(!is_null($gitTitle))
    {
        $stmt->bindParam(':gitTitle', $gitTitle, PDO::PARAM_STR, 150);
    }
    if(!is_null($buttonLink))
    {
        $stmt->bindParam(':buttonLabel', $buttonLabel, PDO::PARAM_STR, 150);
        $stmt->bindParam(':buttonLink',  $buttonLink, PDO::PARAM_STR, 150);
        $stmt->bindParam(':buttonText', $buttonText, PDO::PARAM_STR, 100);
        $stmt->bindParam(':buttonTarget', $buttonTarget, PDO::PARAM_INT, 2);
    }
    $bool = $stmt->execute();
    print_pre($stmt->errorInfo()); //Uncomment for error reporting
    return $bool;
}
编辑:

这个问题不是你标记的那些问题的副本,这些问题有不正确的绑定数量,这是处理NULL值,Robbie Averill好心地指出。

只绑定一些值不为空的参数。你应该在执行语句之前处理你的错误,而不是不管怎么执行,或者只是绑定null。

PDO不能成功执行未绑定的参数,所以这可能是你得到这个错误的原因。