別のプログラマーが作成した Web サイトを管理しています。Web ページのコンテンツは DB (MySQL / SQL) から読み込まれます - 彼はデザインに JOOMLA を使用しました。想定されていない特殊文字が Web ページに表示されていました (e から st)。サーバー(SQLサーバー)でデフォルトの文字セットをUTF_8_general_ciに変更したい。どうすればこれを行うことができますか?ありがとう。
質問する
218 次
3 に答える
0
MySQL データベース内のすべてのテーブルの照合順序を変更すると、テーブルの数によっては時間がかかる場合があります。
That's why we recommend using the following PHP script for changing the collation for all tables at a time:
<?php
$execute_sql = false;
$host = 'host name';
$username = 'user_name';
$password = 'password';
$dbname = 'databse_name';
$db = new mysqli($host, $username, $password, $dbname);
//$connect = mysql_connect('localhost','root','Admin@123');
//$select_db = mysql_select_db('friends') or die('database not selected'.mysql_error());
$collation = 'CHARACTER SET utf8 COLLATE utf8_unicode_ci';
$collationPK = 'CHARACTER SET utf8 COLLATE utf8_bin';
$result = $db->query("SET foreign_key_checks = 0");
echo '<div>';
if($execute_sql) $db->query("ALTER DATABASE $dbname $collation");
$result = $db->query("SHOW TABLES");
$count = 0;
while($row = $result->fetch_assoc()) {
$table = $row['Tables_in_'.$dbname];
if($execute_sql) $db->query("ALTER TABLE $table DEFAULT $collation");
$result1 = $db->query("SHOW FULL COLUMNS FROM $table");
$alter = '';
while($row1 = $result1->fetch_assoc()) {
if (preg_match('~char|text|enum|set~', $row1["Type"])) {
// support a different collation for primary keys
if ($row1["Key"] == "PRI" || $row1["Key"] == "MUL") {
$newCollation = $collationPK;
} else {
$newCollation = $collation;
}
// check if we actually need to change the collation
$alter .= (strlen($alter)?", \n":" ") . "MODIFY `$row1[Field]` $row1[Type] $newCollation" . ($row1["Null"] ? "" : " NOT NULL") . ($row1["Default"] && $row1["Default"] != "NULL" ? " DEFAULT '$row1[Default]'" : "");
}
}
if(strlen($alter)){
$sql = "ALTER TABLE $table".$alter.";";
echo "<div>$sql\n\n</div>";
$db->query($sql);
}
$count++;
}
echo '</div>';
?>
于 2012-11-02T07:43:09.007 に答える
0
サーバーにログインして、そこから SQL テーブル定義を変更するだけです。cPanel を使用している場合、選択する必要があるオプションは MYPhPAdmin です。そこには joomla テーブルのリストがあり、通常は接頭辞 jos_ が付いています。
于 2012-10-30T15:46:29.633 に答える