0

我有一张桌子:

up_rel

> |--id--|--uid--|--pid--|--show--|

我正在做这个插入序列:

 $icat_sth = $dbh->prepare("INSERT INTO product_category (name, parent) VALUES(:name, :parent)");
    $icat_sth->bindParam(':name', $post['cat_name']);
    $icat_sth->bindParam(':parent', $post['parent_category']);
    $icat_sth->execute();
    $pid = $dbh->lastInsertId();

    $rel_sth = $dbh->prepare("INSERT INTO up_rel (uid, pid, show) VALUES(:uid, :pid, :show)");
    $rel_sth->bindParam(':uid', $uid);
    $rel_sth->bindParam(':pid', $pid);
    $rel_sth->bindParam(':show', '1');
    $rel_sth->execute();
    echo $dbh->lastInsertId();

第一次插入产品类别顺利,但下一次插入返回错误:

1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'show) VALUES(?, ?, ?)' 附近使用正确的语法

如果我从插入中删除显示它可以工作。

我已经尝试将它放在值(:uid, :pid, 1) 中,并且在绑定中我引用了它而不是。

有什么我想念的吗?

4

1 回答 1

7

Show是 MySQL 中的保留字,所以我认为这是您看到的错误:http: //dev.mysql.com/doc/refman/5.0/en/show.html

根据@Burhan Khalid 的贡献(如果您无法重命名该字段,这是一个不错的选择):

要转义保留字,请使用反引号 ``。

@newfurniturey 对保留字有更有用的参考:

http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

于 2013-03-11T04:30:28.213 回答