“ON DUPLICATE KEY UPDATE”出现MySQL错误

时间:2014-04-01 07:00:10

标签: php mysql sql

我的PHP代码:

$stmt = $mysqli->prepare("INSERT INTO pages (name, content, in_nav, use_page, page, id) VALUES (?, ?, '$in_nav', '$use_page', ?, '$id'); ON DUPLICATE KEY UPDATE name=?, content=?, in_nav='$in_nav', use_page='$use_page', page=?");
$stmt->bind_param("ssssss", $name, $body, $page, $name, $body, $page);
$stmt->execute();
$stmt->close();

但如果我执行它,它会说:

  

致命错误:在第199行的C:\ xampp \ htdocs \ cms \ admin \ cms.php中的非对象上调用成员函数bind_param()

当我尝试$mysqli->error;时,它说:

  

您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在'ON DUPLICATE KEY UPDATE name = ?, content = ?, in_nav ='1',use_page ='0',page =?'附近使用正确的语法。在第1行

2 个答案:

答案 0 :(得分:2)

删除应该修复它的)之后的分号

代码应该是这个

$stmt = $mysqli->prepare("INSERT INTO pages (name, content, in_nav, use_page, page, id) VALUES (?, ?, '$in_nav', '$use_page', ?, '$id') ON DUPLICATE KEY UPDATE name=?, content=?, in_nav='$in_nav', use_page='$use_page', page=?");

答案 1 :(得分:1)

你在ON DUPLICATE KEY UPDATE之前留下了一个分号,你应该删除它。

更正语法(请参阅documentation

INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)
  ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);

解决您的问题

$stmt = $mysqli->prepare("INSERT INTO pages (name, content, in_nav, use_page, page, id) VALUES (?, ?, '$in_nav', '$use_page', ?, '$id') ON DUPLICATE KEY UPDATE name=?, content=?, in_nav='$in_nav', use_page='$use_page', page=?");

希望这会有所帮助: - )