使用 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();
}
非常感谢所有试图帮助我的人。
我需要一些帮助来使用 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();
}
非常感谢所有试图帮助我的人。