我无法理解此错误的含义,Mysql错误

时间:2019-03-20 14:02:33

标签: html mysql

以下代码

$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,不包含字母。我不明白为什么这个脚本会显示错误。

编辑:我不要求别人查看我的代码,只是告诉我该错误的含义。

1 个答案:

答案 0 :(得分:3)

该错误的含义是无法将字符串文字转换为整数值。


只需删除单引号即可。

MySQL将此视为字符串文字:

    VALUES (':parrentid',
            ^^^^^^^^^^^^

关于字符串文字中的冒号没有什么特别的。删除单引号,以便MySQL在SQL文本中将绑定占位符视为令牌,而不是字符串常量。

    VALUES ( :parrentid ,
            ^          ^