gpt4 book ai didi

php - 如何从数据库中删除 htmlentities() 值?

转载 作者:IT老高 更新时间:2023-10-29 00:21:55 26 4
gpt4 key购买 nike

早在我什么都不知道之前——即使现在我也不知道——我用 php 设计了一个 web 应用程序,它在通过 htmlentities() 运行值后将数据插入到我的 mysql 数据库中。我最终意识到并删除了这一步并将其卡在输出而不是输入中并继续我的快乐方式。

然而,我不得不重新访问这些旧数据,不幸的是我遇到了一个问题,当它显示在屏幕上时,我得到的值显示为有效地 htmlentitied 两次。

那么,是否有 mysql 或 phpmyadmin 方法可以将所有旧的、受影响的行改回其相关字符,还是我必须编写脚本来读取每一行、解码和更新 12 个表中的所有 1700 万行?

编辑:

感谢大家的帮助,我在下面写了自己的答案,里面有一些代码,它不是很漂亮,但它在前面的测试数据上工作,所以除非有人在我 sleep 时指出我的代码中的明显错误,否则我'明天将在备份DB上运行它,然后在现场直播上运行它,如果效果还好。

最佳答案

我最终使用了这个,不是很漂亮,但我累了,现在是凌晨 2 点,它完成了它的工作! (编辑:关于测试数据)

$tables = array('users', 'users_more', 'users_extra', 'forum_posts', 'posts_edits', 'forum_threads', 'orders', 'product_comments', 'products', 'favourites', 'blocked', 'notes');
foreach($tables as $table)
{
$sql = "SELECT * FROM {$table} WHERE data_date_ts < '{$encode_cutoff}'";
$rows = $database->query($sql);
while($row = mysql_fetch_assoc($rows))
{
$new = array();
foreach($row as $key => $data)
{
$new[$key] = $database->escape_value(html_entity_decode($data, ENT_QUOTES, 'UTF-8'));
}
array_shift($new);
$new_string = "";
$i = 0;
foreach($new as $new_key => $new_data)
{
if($i > 0) { $new_string.= ", "; }
$new_string.= $new_key . "='" . $new_data . "'";
$i++;
}
$sql = "UPDATE {$table} SET " . $new_string . " WHERE id='" . $row['id'] . "'";
$database->query($sql);
// plus some code to check that all out
}
}

关于php - 如何从数据库中删除 htmlentities() 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2838245/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com