我的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行
答案 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=?");
希望这会有所帮助: - )