以下代码
$stmt = $db->prepare("INSERT INTO posts
(parrentid,posttype,name,description,post,
posts,author,lastpostauthor,lastpost,locked)
VALUES (':parrentid',':posttype',':name',':description',':post',
':posts',':author',':lastpostauthor',':lastpost',':locked')");
$stmt->bindValue(':parrentid', (int) $parrentID, PDO::PARAM_INT);
$stmt->bindValue(':posttype', (int) 1, PDO::PARAM_INT);
$stmt->bindValue(':name', (string) "404", PDO::PARAM_STR);
$stmt->bindValue(':description', (string) "404", PDO::PARAM_STR);
$stmt->bindValue(':post', (string) $post, PDO::PARAM_STR);
$stmt->bindValue(':posts', (int) 0, PDO::PARAM_INT);
$stmt->bindValue(':author', (int) $_SESSION['loggedIn'], PDO::PARAM_INT);
$stmt->bindValue(':lastpostauthor', (int) 0, PDO::PARAM_INT);
$stmt->bindValue(':lastpost', (int) 0, PDO::PARAM_INT);
$stmt->bindValue(':locked', (int) 0, PDO::PARAM_INT);
$stmt->execute();
if(!$stmt->execute()) {
echo "<br>";
print_r($stmt->errorInfo());
}
打印以下错误
Array ( [0] => HY000
[1] => 1366
[2] => Incorrect integer value: ':parrentid' for column 'parrentid' at row 1 )
那是什么意思?如果我能够理解错误,我将修复需要修复的所有内容。一切都好。所有参数均正确写入。父级ID的值为16,不包含字母。我不明白为什么这个脚本会显示错误。
编辑:我不要求别人查看我的代码,只是告诉我该错误的含义。
答案 0 :(得分:3)
该错误的含义是无法将字符串文字转换为整数值。
只需删除单引号即可。
MySQL将此视为字符串文字:
VALUES (':parrentid',
^^^^^^^^^^^^
关于字符串文字中的冒号没有什么特别的。删除单引号,以便MySQL在SQL文本中将绑定占位符视为令牌,而不是字符串常量。
VALUES ( :parrentid ,
^ ^