我有以下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不能成功执行未绑定的参数,所以这可能是你得到这个错误的原因。