$sql = "SET @tag_name = '$tag_value',
@tag_link = '$tag_link',
@user_value = '$user_value';
INSERT INTO urls_unis
(tag_name, tag_link, user_data)
VALUES
(@tag_name, @tag_link, @user_value)
ON DUPLICATE KEY UPDATE
tag_name = @tag_name,
tag_link = @tag_link,
user_data = @user_value;
";
if(mysqli_query($link, $sql)){
echo "Records inserted successfully.";
} else{
echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}
}
上面的代码返回这个:
错误:无法执行
SET @tag_name ='查看历史记录',@tag_link ='zNIL',@user_value ='/w/index.php?title=Non-volatile_random-access_memory&action=history';将INSERT INTO urls_unis(tag_name,tag_link,user_data)值(@ tag_name,@ tag_link,@ user_value)设置为重复密钥更新tag_name = @ tag_name,tag_link = @ tag_link,user_data = @user_value; 。您的SQL语法有错误;在第4行的“ INSERT INTO urls_unis(tag_name,tag_link,user_data)VALUES(@tag_name)”附近检查与MySQL服务器版本相对应的手册以使用正确的语法
当我将mysql查询复制并粘贴到phpmyadmin来执行它时,它工作正常。没有错误返回。
为什么会出现,我该如何解决?
答案 0 :(得分:1)
您不能在单个查询中运行多个查询行。您需要单独运行它们或使用inner class
。您可以通过仅使用变量来避免所有这些情况,而无需先经过设置MySQL变量的过程。
更好的是,您将使用准备好的语句,而不是将变量直接注入查询中。因为您使用了两次值,并且MySQLi不支持命名占位符,所以我们必须将每个变量绑定两次。
mysqli_multi_query()