我正在编写PHP代码并且遇到查询条件问题。另外,如果你能告诉我如何通过使用Mysql中的存储过程来实现这一点,那将是非常好的。
我的任务是如果用户外键不存在则运行INSERT查询。如果用户外键在“User_ID”列中,则更新它。
但是在这里我可以在数据库中的列'User_ID'上放置唯一条件。因此,数据库不会发生重复事件
以下查询显示此错误
您的SQL语法中有错误;查看与您的MySQL服务器版本相对应的手册,以便在'第23行NOT IN(SELECT User_ID FROM VoiceMail)附近使用正确的语法使用ELSE UPDATE VoiceMail SET Urg'在第3行
$result=mysql_query("select * from Users",$con);
while($row= mysql_fetch_array($result))
{
$info=getVM($row['Ext'],$ast);
$info[3]=$row['User_ID']; // To insert User_ID from Users table
$query="INSERT INTO VoiceMail (Urgent, New, Old, User_ID)
VALUES ($info[0],$info[1],$info[2],$info[3])
WHEN $info[3] NOT IN (SELECT User_ID FROM VoiceMail)
ELSE UPDATE VoiceMail SET Urgent=$info[0], New=$info[1], Old=$info[2] WHERE User_ID=$info[3]";
if (!mysql_query($query,$con))
{
die('Error: ' . mysql_error());
}
else echo "Database Updated..!";
答案 0 :(得分:0)
User_Id是否是唯一键?如果是这样,您可以使用ON DUPLICATED KEY UPDATE
INSERT INTO VoiceMail (Urgent, New, Old, User_ID)
VALUES ($info[0],$info[1],$info[2],$info[3])
ON DUPLICATE KEY UPDATE Urgent=values(Urgent), New=values(New), Old=values(Old)
答案 1 :(得分:0)
只需简单地查询:
$query="REPLACE INTO VoiceMail (Urgent, New, Old, User_ID)
VALUES ($info[0],$info[1],$info[2],$info[3])";
如果已经存在,它将替换值,如果不存在则插入new。
希望它会有所帮助