在没有条件语句出现的情况下执行INSERT


Execute INSERT in case no conditional statement occurs

我有一个PHP文件,检查通过$_POST给出的3个可能的单词是否已经在DB上创建。

如果这些单词存在于任何一个DB记录中,则返回一个错误。

如果这些词都不存在,则执行INSERT查询。

此代码正确检查3个给定的单词(如果给定)是否存在,如果存在,则正确回显错误。但如果这些都不存在,网站就会冻结,没有插入。

我怎么能要求PHP运行INSERT查询(什么是现在放在ELSE语句)在所有IF语句是假的情况下?

    $ca_key1 = $_POST['ca_key1'];
    $ca_key2 = $_POST['ca_key2'];
    $ca_key3 = $_POST['ca_key3'];
    if ($ca_key1!=="" || $ca_key2!=="" || $ca_key3!==""){
        $selectKeys = mysqli_query($con, "SELECT ca_key1,ca_key2,ca_key3 FROM ws_campaigns WHERE ca_fk_us_id='$id'");
        if ($ca_key1!==""){            
            while($registroKeys = mysqli_fetch_array($selectKeys)){
               if ($registroKeys['ca_key1']===$ca_key1 || $registroKeys['ca_key2']===$ca_key1 || $registroKeys['ca_key3']===$ca_key1){
                   echo "No se ha creado la campaña. La palabra ".$ca_key1." ya está siendo utilizada en una campaña previa.";
               } 
            }      
        }
        else if ($ca_key2!==""){
            while($registroKeys = mysqli_fetch_array($selectKeys)){
               if ($registroKeys['ca_key1']===$ca_key2 || $registroKeys['ca_key2']===$ca_key2 || $registroKeys['ca_key3']===$ca_key2){
                   echo "No se ha creado la campaña. La palabra '".$ca_key2."' ya está siendo utilizada en una campaña previa.";
               } 
            }      
        } 
        else if ($ca_key3!==""){
            while($registroKeys = mysqli_fetch_array($selectKeys)){
               if ($registroKeys['ca_key1']===$ca_key3 || $registroKeys['ca_key2']===$ca_key3 || $registroKeys['ca_key3']===$ca_key3){
                   echo "No se ha creado la campaña. La palabra '".$ca_key3."' ya está siendo utilizada en una campaña previa.";
               } 
            }      
        } 
        else{
            //DEVOLUCIÓN ID CAMPAÑA
            if ($result = $con->query("INSERT INTO ws_campaigns (ca_id, ca_name, ca_content, ca_fk_us_id, ca_img, ca_prefix,ca_key1,ca_key2,ca_key3) VALUES ('','$ca_title', '$ca_content','$id','$ca_img','$ca_prefix','$ca_key1','$ca_key2','$ca_key3')")) {
                 echo $con->insert_id;
              }
        }

    }
    else{
        //DEVOLUCIÓN ID CAMPAÑA
        if ($result = $con->query("INSERT INTO ws_campaigns (ca_id, ca_name, ca_content, ca_fk_us_id, ca_img, ca_prefix,ca_key1,ca_key2,ca_key3) VALUES ('','$ca_title', '$ca_content','$id','$ca_img','$ca_prefix','$ca_key1','$ca_key2','$ca_key3')")) {
           echo $con->insert_id;
        }
    }

我的建议是有另一个else if作为检查

else if(empty($ca_key3) && empty($ca_key2) && empty($ca_key1))
{
}

要明确确保

检查执行查询时的结果:

$result = mysqli_query(...);
if (!$result) {
    die('error: ' . mysql_error());
}

可能会失败,错误信息会告诉你原因。

最后,正如Fred -ii所说,解决这个问题的方法是创建一个INSERT查询,结合AND和OR,以便对数据库进行一次检查。

这个方法已经正确解决了这个问题:

if ($ca_key1!=="" || $ca_key2!=="" || $ca_key3!==""){
        $selectKeys = mysqli_query($con, "SELECT ca_key1,ca_key2,ca_key3 FROM ws_campaigns WHERE ca_fk_us_id='$id' AND ("
                . "   (ca_key1!='' AND ca_key1='$ca_key1') OR (ca_key2!='' AND ca_key2='$ca_key1') OR (ca_key3!='' AND ca_key3='$ca_key1') "
                . "OR (ca_key1!='' AND ca_key1='$ca_key2') OR (ca_key2!='' AND ca_key2='$ca_key2') OR (ca_key3!='' AND ca_key3='$ca_key2')"
                . "OR (ca_key1!='' AND ca_key1='$ca_key3') OR (ca_key2!='' AND ca_key2='$ca_key3') OR (ca_key3!='' AND ca_key3='$ca_key3'))");
        if (mysqli_num_rows($selectKeys) === 0){
            if ($result = $con->query("INSERT INTO ws_campaigns (ca_id, ca_name, ca_content, ca_fk_us_id, ca_img, ca_prefix,ca_key1,ca_key2,ca_key3) VALUES ('','$ca_title', '$ca_content','$id','$ca_img','$ca_prefix','$ca_key1','$ca_key2','$ca_key3')")) {
             echo $con->insert_id;
          }
        }
        else{
            echo "No se ha creado la campaña. <br>Alguna de las palabras clave utilizadas ya están presentes en una campaña anterior.";
        }

    }else{
        //DEVOLUCIÓN ID CAMPAÑA
        if ($result = $con->query("INSERT INTO ws_campaigns (ca_id, ca_name, ca_content, ca_fk_us_id, ca_img, ca_prefix,ca_key1,ca_key2,ca_key3) VALUES ('','$ca_title', '$ca_content','$id','$ca_img','$ca_prefix','$ca_key1','$ca_key2','$ca_key3')")) {
             echo $con->insert_id;
          }
    }