我需要将产品的描述从一个表复制到另一个表,一切正常,直到
<img src="url" width="50%" height="50%" />
标签出现在描述中。我有一个脚本,可以循环复制产品的描述:
$rowParse = Parsing::find()->where(['art_post' => $value])->one();
$desc = $rowParse->description;
Yii::$app->db->createCommand("UPDATE `products` SET `description`=:desc WHERE `id_post`=:id && `art_post`=:art")
->bindValues([':desc'=>$desc, ':id'=>$id_post, ':art'=>$art_post])->execute();
如果我复制单个产品的描述,它会根据需要工作 - 标签插入其属性,但如果我这样做,例如,循环中的 100 个产品,属性
width
和 height
就会消失,它会像 <img src="url" />
一样插入
插入所有其他 html 标签(如 span、strong、td、tr、p)都可以正常工作。
我是编程世界的新手,所以我需要大佬的帮助:D 先谢谢你了
确保
description
表中的 products
字段具有支持存储 HTML 的数据类型,例如 TEXT
或 LONGTEXT
。如果字段的类型类似于 VARCHAR
且长度有限,则可能会截断您的 HTML 内容。
确保当您从
Parsing
表检索描述时,HTML 内容未被编码或转义。当从数据库检索数据时,Yii 可能会自动转义 HTML 实体。您可以使用
Html::decode()
确保 HTML 不被编码:
$desc = Html::decode($rowParse->description);
如果您要在循环中更新大量记录,您可能需要考虑将更新包装在事务中以确保数据一致性:
$transaction = Yii::$app->db->beginTransaction();
try {
// Your loop and update logic here
$transaction->commit();
} catch (\Exception $e) {
$transaction->rollBack();
throw $e;
}
This way, if an error occurs during the loop, the changes are rolled back, and your data remains consistent.
在代码中添加一些日志语句以查看正在检索和更新哪些值。这可以帮助您确定问题发生的位置。
Yii::info('Description from Parsing table: ' . $desc, 'app');
然后您可以检查日志以查看更新时是否存在宽度和高度属性。