使用 IF 子句插入 PDO

Insert into PDO with IF clause

我需要一些帮助来使用 IF 子句将一些数据插入 sql 服务器 table。 我在 sql 服务器的 table 中插入了 API 的 return。 然而,由于我每天都会安排我的代码从 API 获取更新以查看是否有任何新内容,但每次执行代码时它都会将相同的信息插入 table.

我认为最合乎逻辑的事情是在 table 中创建一个 select,我将在其中插入数据并创建一个 IF,它比较 table 中的内容和数组中的 return。如果相同,则不执行任何操作,如果不同,则将其插入。但是,即使 IF 的 return 为假,else 也未被验证。

我试过 If, ifelse, If(): else: endif;但我不能。

有人可以帮我吗?


   $resultado = json_decode(curl_exec($curl),true);
    curl_close($curl);



//! Teste SELECT:

$qyS = Conexao::getConnection()->prepare("SELECT idSkill FROM LIVEPERSON_SKILLS");
$qyS->execute();
$selectResult = $qyS->fetchAll();

foreach ($selectResult as $indSelect => $retSelect){
    $idSkillComp = $retSelect['idSkill'];


//* 6 | Abertura do laço ['skills']
    foreach ($resultado as $indice => $infoSkills){
        $idSkill = $infoSkills['id'];
        $name = $infoSkills['name'];
        $deleted = $infoSkills['deleted'];
        $dh_insert = date("Y-m-d H:i:s");

//* 7 | Inserção dados no banco:

    if($idSkill == $idSkillComp){
        echo "error";
    }else{
    $qyI = Conexao::getConnection()->prepare("INSERT INTO LIVEPERSON_SKILLS 
        (DH_INSERT,idSkill,name,deleted) 
        VALUES (:d, :i, :n, :x)");

    $qyI->bindValue(":d",$dh_insert);
    $qyI->bindValue(":i",$idSkill);
    $qyI->bindValue(":n",$name);
    $qyI->bindValue(":x",$deleted);
    $qyI->execute();
        }


    }
  }

下午好。我确定了那种情况下发生的事情。在第二个 foreach 中,我要求从查询中找到的每一行开始(我相信这是 foreach 的正常行为)。因此,在插入数据时,我最终插入了一个副本,因为在 select.

中找到的每一行都有 36 个 skillIds

我解决了这个问题,将规则留在插入中,将其更改为插入 select 而不是制作 select,然后与要插入的内容进行比较。

事情是这样的:

   $resultado = json_decode(curl_exec($curl),true);
    curl_close($curl);

    foreach ($resultado as $indInfoSkills => $infoSkills){
        $idSkillPrepare = array($infoSkills['id']);
        $idSkill =  implode(",",$idSkillPrepare);
        $name = $infoSkills['name'];
        $deleted = $infoSkills['deleted'];
        $dh_insert = date("Y-m-d H:i:s");

    $qyI = Conexao::getConnection()->prepare(
        "INSERT INTO LIVEPERSON_SKILLS (DH_INSERT,idSkill,name,deleted) 
            SELECT :dhInsert, 
                   :idSkill, 
                   :name, 
                   :deleted 
            WHERE NOT EXISTS (SELECT idSkill 
                              FROM LIVEPERSON_SKILLS 
                              WHERE idSkill = '$idSkill')");
        
    $qyI->bindValue(":dhInsert",$dh_insert);
    $qyI->bindValue(":idSkill",$idSkill);
    $qyI->bindValue(":name",$name);
    $qyI->bindValue(":deleted",$deleted);
    $qyI->execute();

    }

非常感谢所有试图帮助我的人。