我有以下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值。
答案 0 :(得分:2)
如果它们的值不为null,则只绑定一些参数。您应该在执行语句之前处理错误,而不是执行任何操作,或者只是绑定null。
PDO无法使用未绑定的参数成功执行,因此这可能是您收到该错误的原因。