私は誰も満足できるSQLのみのソリューションを提供できないので、私はこのスクリプトに似たスクリプトで解決しました。あなたが上でそれを使用するすべてのテーブルは主キーを持っている場合にのみ動作しますが、これは通常、それだけでいくつかの異なる文字だ場合、あなたはおそらく、単純な文字列で更新クエリを行うことができ
<?php
// Specify which columns need to be de-entitiezed
$affected = array(
'table1' => array('column1', 'column2'),
'table2' => array('column1', 'column2'),
);
// Make database connection
$db = new PDO("mysql:dbname=yourdb;host=yourhost", "user", "pass");
foreach($affected as $table => $columns){
// Start a transaction for each table
$db->beginTransaction();
// Find the table primary key. PHP5.4 syntax!
$pk = $db->query("SHOW INDEX FROM " . $table . " WHERE Key_name = 'PRIMARY'")->fetch()[0];
foreach($columns as $column){
// Construct a prepared statement for this column
$ps = $db->prepare("UPDATE " . $table . " SET " . $column . " . = ? WHERE " . $pk . " = ?");
// Go through all rows
foreach($db->query("SELECT " . $column . ", " . $pk . " FROM " . $table) as $row){
$row[0] = html_entity_decode($row[0]); // Actual processing
$ps->execute($row);
}
}
// Everything went well for this table, commit
$db->commit();
}
?>
ケースになることを 注意検索/置換。しかし、多種多様な場合は、PHPのラウンドトリップオプションを使用してください。 –
このデータベースだけでは50以上のエンティティが使用されており、HTMLではすべての文字をxx;構文を使用してHTMLエンティティとして書き込むことができるため、検索と置換のように単純ではありません。 – dtech