使用POST METHOD $tab_tuto_sauvegarde = $_POST['tableau_valeurs_modifiees'];
,Ajax请求会向我返回以下信息:
[Mots_cles_supprimes] => Array
(
[0] => jambon
[1] => rap
[2] => tomate
)
我有这些表
TABLE 1 named 'Mots_cles'
| mots_cles |
_____________
| jambon |
| rap |
| tomate |
TABLE 2 named 'Mots_cles_et_tutoriels'
| id_tutoriel || mots_cles |
______________________________
| ID1 || rap |
| ID1 || rap |
| ID2 || tomate |
| ID2 || rap |
| ID2 || tomate |
首先DELETE
[index]
来自tableau_valeurs_modifiees.['Mots_cles_supprimes']
TABLE 2
的每个if (isset ($tab_tuto_sauvegarde['Mots_cles_supprimes'])){
$sql_Mots_cles_id_tutoriel = "";
foreach($tab_tuto_sauvegarde['Mots_cles_supprimes'] as $index => $valeur){
$sql_Mots_cles_id_tutoriel .= "('$id_tutoriel', '$valeur'), ";
}
if($sql_Mots_cles_id_tutoriel !== ""){
$sql_Mots_cles_id_tutoriel = substr($sql_Mots_cles_id_tutoriel, 0, -2); // Supprime la ',' à la fin de la chaine de caractere
mysqli_query($BDD_connect, "DELETE FROM Mots_cles_et_tutoriels WHERE (id_tutoriel, mots_cles) IN (".$sql_Mots_cles_id_tutoriel.")");
,如下所示:
[index]
效果很好!
然而,我需要的是tableau_valeurs_modifiees.['Mots_cles_supprimes']
TABLE 2
TABLE 2
(此处:" jambon"," rap"" tomate&# 34;)将这些字词与DELETE
进行比较,如果TABLE 1
中不存在$stmt_mot_a_sup = mysqli_prepare($BDD_connect, "DELETE FROM Mots_cles SET mots_cles = ? ");
mysqli_stmt_bind_param($stmt_mot_a_sup, "s", $mot_a_sup);
foreach ($tab_tuto_sauvegarde['Mots_cles_supprimes'] as $Mots_cles_supprimes) {
$mot_a_sup = $Mots_cles_supprimes;
mysqli_execute($stmt_mot_a_sup);
}
,则$tab_tuto_sauvegarde = $_POST['tableau_valeurs_modifiees'];
我想我的代码已经结束了(表1中每个单词都有DELETE),但如果这些单词在表1中不存在,它会错过我的条件......
90
我不知道,如果不存在于表2中的条件,那么>删除表1 ......?
谢谢!
以下是两个表格:
1 /表" Mots_cles"其中包含所有关键字数据库
2 /表" Mots_cles_et_tutoriels" wich countain属于每个id_tutorial的关键字
我的帖子方法92
回到我身边:
1 /一个ID(一个数字),如if (isset ($tab_tuto_sauvegarde['Mots_cles_supprimes'])){
$sql_Mots_cles_id_tutoriel = "";
foreach($tab_tuto_sauvegarde['Mots_cles_supprimes'] as $index => $valeur){
$sql_Mots_cles_id_tutoriel .= "('$id_tutoriel', '$valeur'), ";
}
if($sql_Mots_cles_id_tutoriel !== ""){
$sql_Mots_cles_id_tutoriel = substr($sql_Mots_cles_id_tutoriel, 0, -2); // Supprime la ',' à la fin de la chaine de caractere
mysqli_query($BDD_connect, "DELETE FROM Mots_cles_et_tutoriels WHERE (id_tutoriel, mots_cles) IN (".$sql_Mots_cles_id_tutoriel.")");
或id_tutoriel => 92
[Mots_cles_supprimes] => Array
(
[0] => rap
[1] => tyty
[2] => er6
[3] => Kawasaki
)
或其他...对应教程
2 /表格中删除的几个单词' Mots_cles_et_tutoriel'对应的ID返回给我
所以,首先我删除表格中的几个单词' Mots_cles_et_tutoriel'像这样:
"rap"
然后,我需要的是,如果表中不再存在这些删除的单词" Mots_cles_et_tutoriels" (无论id ...),我还需要在表格中删除" Mots_cles" (删除所有数据库中的这些单词)。
例如,如果我的POST方法返回给我:
"tyty"
在表格" Mots_cles_et_tutoriels"我删除了"er6"
,"kawasaki"
,92
和"er6"
,其中" id_tutoriel" = "kawasaki"
我想在表格中删除" Mots_cles"只是单词"rap"
和"tyty"
因为刚删除后,表格中不再存在#34; Mots_cles_et_tutoriels"与{< {1}}和{{1}}不同,它们已经存在于表格" Mots_cles_et_tutoriels"。
答案 0 :(得分:1)
起初:很难读出混合的英语和法语:-)但我想我明白了。
DELETE FROM TABLE_1 t1
WHERE t1.mots_cles not in (
SELECT t2.mots_cles FROM TABLE_2 t2
)
这个简单的查询说你要删除TABLE_1中的每一行,它们在TABLE_2中没有并发值行。对于更大的数据库,这应该进行优化。