【发布时间】:2012-03-30 22:35:07
【问题描述】:
我正在编写 PHP 代码并且遇到查询条件问题。另外,如果您能告诉我如何通过在 Mysql 中使用存储过程来完成此操作,那将非常好。
我的任务是在用户外键不存在时运行 INSERT 查询。如果“User_ID”列中存在用户外 ke,则对其进行更新。
但在这里我可以将唯一条件放在数据库中的“User_ID”列上。因此,不会从数据库中发生重复事件。
以下查询显示此错误
您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 3 行的“WHEN 23 NOT IN (SELECT User_ID FROM VoiceMail) ELSE UPDATE VoiceMail SET Urg”附近使用正确的语法
$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..!";
【问题讨论】:
-
Mysql 不支持,
INSERT .. ELSE UPDATE...。你可以简单地做INSERT .. ON DUPLICATE KEY UPDATE ...dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html -
是的..!但在这里我可以在数据库中的“User_ID”列上设置唯一条件。所以数据库中不会发生重复事件
标签: php mysql database stored-procedures