我是MySQL的新手,我在插入记录之前尝试检查用户是否存在于数据库中,但我收到此错误1064,SQL语法错误。 MySQL声明
IF (SELECT count(*) FROM tvstream.t_users WHERE fb_id=`123456`)=0 THEN
Begin
INSERT INTO `tvstream`.`t_users` (`fb_id` ,`user_name` ,`email` ,`gender`)
Values (`123456`,`Daina`,`Daina@gmail.com`,`Female`)
End
ASP代码
StringBuilder SQL_Add = new StringBuilder("IF (SELECT count(*) FROM tvstream.t_users WHERE fb_id=`" + fb_id +"`)=0 THEN ");
SQL_Add.Append("Begin ");
SQL_Add.Append("INSERT INTO `tvstream`.`t_users` (`fb_id` ,`user_name` ,`email` ,`gender`)");
SQL_Add.Append(" Values (`" + fb_id + "`,`" + user_name + "`,`" + email + "`,`" + gender + "`)");
SQL_Add.Append(" End");
Response.Write(SQL_Add.ToString());
MySqlConnection m_cnn = new MySqlConnection(myConnection);
m_cnn.Open();
MySqlCommand cmd = new MySqlCommand(SQL_Add.ToString());
cmd.Connection = m_cnn;
cmd.ExecuteNonQuery();
请建议并谢谢
答案 0 :(得分:0)
你应该用一个sql查询来检查用户存在,另一个用于插入一个新用户。
检查:
SELECT count(*) FROM tvstream.t_users WHERE fb_id=`123456`
插入:
INSERT INTO `tvstream`.`t_users` (`fb_id` ,`user_name` ,`email` ,`gender`)
Values (`123456`,`Daina`,`Daina@gmail.com`,`Female`)
基本上你应该运行第一个查询,检查结果,然后执行插入。
我真的需要完全由SQL端完成,然后你需要在DB中存储过程。
DELIMITER //
CREATE FUNCTION InsertUnique(fb_id VARCHAR(20), user_name VARCHAR(30), email VARCHAR(40), gender VARCHAR(10))
RETURNS INT
BEGIN
DECLARE s INT;
IF (SELECT count(*) FROM tvstream.t_users WHERE fb_id=`123456`)=0 THEN SET s = 1;
ELSE SET s = 0;
END IF;
IF s = 0 THEN
INSERT INTO `tvstream`.`t_users` (`fb_id` ,`user_name` ,`email` ,`gender`)
Values (fb_id,user_name,email,gender)
END IF;
RETURN s;
END //
DELIMITER ;
我没有检查语法,可能需要修复。