【发布时间】:2021-01-12 03:37:02
【问题描述】:
我需要帮助,我尝试过让这个工作,但我做不到。
我有一个自动更新的 CSV 文件,我需要检查 csv 上的数据是否被删除。
如果是,我还需要删除数据库中的这些数据。
为此,我已将 csv 代码(以查看它是否与数据库值相比)放在 while 数据库循环中。
我不知道这是否是解决方案,但我希望你能帮助我找到解决方案。
这里是完整的代码:
$conn = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) or die("Connection failed: " . $conn->connect_error);
$select_all_sku = "
SELECT
wp_postmeta.*, wp_posts.*
FROM u779870322_y7MxR.wp_posts
INNER JOIN u779870322_y7MxR.wp_postmeta
ON (wp_posts.ID = wp_postmeta.post_id)
WHERE wp_postmeta.meta_key='_fragrancex_item'";
$read_all_sku = $conn->query($select_all_sku);
while($all_sku = $read_all_sku->fetch_assoc()) {
$mm = $all_sku["meta_value"];
$file_handle = fopen("test.csv", "r") or die("can't open");
$c = 1;
while (!feof($file_handle) ) {
$line_of_text = fgetcsv($file_handle, 1024);
if($c>1) {
if ($line_of_text[0] == $mm) {
$OK = "ok";
}
}
$c++;
}
fclose($file_handle);
if(isset($OK)) {
$delete_query ="DELETE
wp_postmeta.*, wp_posts.*
FROM u779870322_y7MxR.wp_posts
INNER JOIN u779870322_y7MxR.wp_postmeta
ON (wp_posts.ID = wp_postmeta.post_id)
WHERE
wp_postmeta.meta_key='_fragrancex_item' AND
wp_postmeta.meta_value='$mm'";
$conn->query($delete_query);
} //if not found
}//loop DB
$conn->close();
【问题讨论】:
-
请对您的代码进行一些格式化,以便阅读
-
我不明白,为什么不可读?你不明白什么?,我的代码很清楚。您有第一部分 = 选择 db,然后您在 csv 文件中进行搜索。
-
在 Slava Rozhne 格式化之前完全无法阅读。
-
首先感谢 Slava Rozhne 格式化代码,我从 DW 复制过去,这是我的第二个帖子,现在我知道下次该做什么了。关于我的代码有人有解决方案吗?我找到了使用会话的解决方案。该会话将在接下来单独收集数据,它将在 csv 循环中与其他会话进行 1 个会话,这解决了我的问题,但如果这是个好主意,则不能解决 Shure。
-
问题 1:为什么需要为每一行读取整个 csv?你为什么不只读一次,将所需的变量存储在一个数组中,然后遍历你的行并检查数组?问题2:在我看来,一旦 $ok=1; $ok 将始终设置
标签: php database csv delete-row