아무도 만족스러운 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