我有一张桌子:
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服务器版本,以便使用正确的语法 靠近'show)VALUES(?,?,?)'在第1行
如果我从插入中移除show,则可以正常工作。
我尝试将其中的一个放入值(:uid, :pid, 1)
在绑定中我引用了它而不是。
我有什么遗失的吗?
答案 0 :(得分:7)
Show
是MySQL中的保留字,所以我认为这是你看到的错误:http://dev.mysql.com/doc/refman/5.0/en/show.html。
Per @Burhan Khalid的贡献(如果你不能重命名该字段,这是一个很好的选择):
要逃避保留字,请使用返回标记``。
@newfurniturey对保留字有更有用的参考: