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

时间:2015-08-13 07:13:11

标签: php pdo

我有以下php功能并且已经无数次检查过它。

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

我已经检查了列数和占位符数,我已经检查过拼写是否一致。我甚至在if(!is_null){}中包含了可能为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;
}

编辑:

这个问题与你标记的那些问题没有重复,因为有不正确的绑定量,这是处理Robbie Averill所指出的NULL值。

1 个答案:

答案 0 :(得分:2)

如果它们的值不为null,则只绑定一些参数。您应该在执行语句之前处理错误,而不是执行任何操作,或者只是绑定null。

PDO无法使用未绑定的参数成功执行,因此这可能是您收到该错误的原因。