Php sql-插入带条件的代码

Php sql-插入带条件的代码,php,mysql,Php,Mysql,我正在尝试编写一个插入代码,如果不存在,则使用条件-Insert。我尝试了两种方法,但我得到了错误信息- 您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 在“如果不存在,请从类型为“commentRepl”的警报中选择*附近 在1号线 我做错了什么 1: 2: mysql_query(" IF NOT EXISTS (SELECT * FROM alerts

我正在尝试编写一个插入代码,如果不存在,则使用条件-Insert。我尝试了两种方法,但我得到了错误信息-

您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 在“如果不存在,请从类型为“commentRepl”的警报中选择*附近 在1号线

我做错了什么

1:

2:

mysql_query("
            IF NOT EXISTS (SELECT * 
                            FROM alerts 
                            WHERE type = 'commentReply'
                            AND userID = ".$mainIndex['userID']."
                            AND viewed = 0)
                    BEGIN
                        INSERT INTO `alerts` (type, userID, fromID, refID, createDate) VALUES ('commentReply', ".$mainIndex['userID'].", ".$_SESSION['userDetails']['userID'].", ".$refID.", ".get_current_linuxTime().")
                    END
            ");     

除非insert语句插入select from,否则不能在select语句中使用where条件

原始mysql语句如下所示

INSERT INTO `alerts` (type, userID, fromID, refID, createDate) 
 select 'commentReply',1,1, 3, curdate()
 from alerts a1
 where not exists(
   select 1 from alerts a2
   where a2.type = 'commentReply'
   and a2.userID = 1
   and a2.viewed = 0
 )
因为您在PHP上使用它,所以您可以根据需要使用一些变量

mysql_query(
 "INSERT INTO `alerts` (type, userID, fromID, refID, createDate) 
 select 'commentReply',".$mainIndex['userID'].",".$_SESSION['userDetails']['userID'].", ".$refID.", ".get_current_linuxTime()."
 from alerts a1
 where not exists(
   select 1 from alerts a2
   where a2.type = 'commentReply'
   and a2.userID = ".$mainIndex['userID']."
   and a2.viewed = 0
 )
");

像这样使用。我希望这能给你一些想法:

$exists = "SELECT email, password FROM agent_register WHERE email='$_POST[email]'";
        $exists_result = mysql_query($exists);
        if (mysql_num_rows($exists_result) > 0) {

            $danger_msg = "Error: This email already exists. Please try again.";
        } else {

            if (mysql_num_rows($exists_result) == 0) {

                $sql = "INSERT INTO agent_register(name, company_name, vat_no, status)
                VALUES('$name', '$company_name', '$vat_no', '0')";
                $result=mysql_query($sql);
            }
        }

避免使用不推荐使用的mysql函数我遇到此错误-1241-操作数应包含1列
$exists = "SELECT email, password FROM agent_register WHERE email='$_POST[email]'";
        $exists_result = mysql_query($exists);
        if (mysql_num_rows($exists_result) > 0) {

            $danger_msg = "Error: This email already exists. Please try again.";
        } else {

            if (mysql_num_rows($exists_result) == 0) {

                $sql = "INSERT INTO agent_register(name, company_name, vat_no, status)
                VALUES('$name', '$company_name', '$vat_no', '0')";
                $result=mysql_query($sql);
            }
        }