Konular
Link Değişimi
Php
Mysql
Html
Javascript
Windows Vista
Program Anlatımı
Internet
Google
Windows 2003 Server
Komikler
Windows Xp
Isa Server
Network
Ofis Programları
Css
Photoshop
Donanım
Joomla
Youtube Video
Diğer Konular
Jquery

Linklerimiz
EskişehirSpor Haberleri
Yacht Charter Gocek
Otel Yorumları
Bedava Link Exchange
Dört Yıldızlı Kemer Otelleri
Satılık Tekne
Very Ferryboats
Otel Maps
Otel iletişim
Boutique Gulets

 
php MySQL Tablolarının ve Tablo Alanlarının Karakter Setini Topluca Değiştirmek
MySQL veri tabanı kullanıyorsanız karakter seti tanımlamaları yüzünden zaman zaman sıkıntılı anlar yaşamışsınızdır. Aşağıdaki betik sayesinde bu tür sorunlarınızın ufak bir bölümüne çözüm sağlayabilirsiniz. Betiğin yaptığı iş tanımlanan karakter setini tüm tablolara ve tablo içinde alanlara uygulamaktan ibarettir. Performansını test etmesemde, üçyüzden fazla tablonun ve sayısı birkaç bini geçen tablo alanlarının tamamının karakter setinin değiştirilmesi 15-20 saniye civarında sürmüştür.

Örnek1: Kullanmakta olduğunuz tablolarınız utf8 ve tablolarınızın içindeki alanlar utf8_general_ci olarak tanımlanmış olsun. Bu durumda MySQL u ve ü harflerinde sorun çıkaracaktır. Bu sorunu gidermek tüm tabloarı ve tablolardaki alanları utf8_turkish_ci karakter setine geçirmeniz gerekecek. Bu durumda bu betiği kullanabilirsiniz.

Örnek 2: Hazır bir yazılım(wordpress, openads vs.) kurdunuz. Ancak MySQL sunucusunun ön tanımlı karakter seti latin1 olduğu için tüm tablolar ve tablo alanları latin1 karakter setinde tanımlanmış oldu. Yazılımı kullanmaya başlamadan önce istediğiniz karakter setiyle(mesela utf8 yada latin5) çalışabilecek hale getirebilirsiniz.(Tabi yazılımın desteklediğini varsayıyorum).

Örnek 3: Hazır bir yazılım kurdunuz, bir süre kullandınız ve veri girdiniz. Ardından karakter setini değiştirmek istediniz, mesela latin5den utf8e geçmek istediniz. Bu betiği kullanırsanız tüm tablolarınız ve tablolarınızın içindeki alanlar istediğiniz karakter setine geçer ancak tablolardaki veriler bozulur. Bu durumdaysanız bu betiği kullanmayınız.

Örneklerden de anlayabileceğiniz gibi, eğer tablolarınızda veri varsa ana karakter setini bu betik ile değiştirebilirsiniz ancak verilerinizin karakter setini bu betik değiştirmez. Fakat ana karakter setini değiştirmeden, alt karakter setleri arasında geçiş yapacaksanız tabloda veri olup olmaması "büyük ihtimalle"(tek tek test edecek vaktim yok maalesef) sorun çıkarmayacaktır.

Her ihtimale karşı betiği kullanmadan önce yedek alın. Yaptığınız değişikliklerden, başarılı veya başarısız farketmez, haberdar ederseniz diğer kullanıcılara faydanız olabilir. Ben utf8_general_ci olarak ayarlı ve içinde veri olan tabloları sorunsuz şekilde utf8_turkish_ci olarak ayarlayabildim.


/*
yazan : turker
e-mail : turker.biz@gmail.com
version : 0.01
------------
Üstteki bilgilere dokunmadan, istediğiniz gibi kullanabilir, satabilir ve dağıtabilirsiniz.
*/
# karakter seti ayarları
$charset='utf8';
# bağlantı ayarları
$conn=mysql_connect("localhost","root","") or die('nerdesin mysql?');
mysql_select_db("testdb",$conn) or die('taze bitti');
# karakter seti değiştirilecek alan tipleri
$types=array(
'CHAR',
'VARCHAR',
'TINYTEXT',
'TEXT',
'MEDIUMTEXT',
'LONGTEXT',
'TINYBLOB',
'BLOB',
'MEDIUMBLOB',
'LONGBLOB',
'ENUM',
'SET'
);
/*---------------- yeter bu kadar ayar ----------------------- */
# follow the white rabbit
$q1=mysql_query('SHOW TABLES');
while ($r1=mysql_fetch_array($q1)) {
$table=$r1[0];
$sql='ALTER TABLE '.$table.' CONVERT TO CHARACTER SET '.
$charset.' COLLATE '.$charset.'_turkish_ci';
mysql_query($sql);
echo "\n\n
$table tablosunun karakter seti değiştirildi";
$q2=mysql_query('SHOW FIELDS FROM `'.$table.'`');
while ($r2=mysql_fetch_assoc($q2)) {
//print_r($r2);
$field=$r2['Field'];
$type=strtoupper($r2['Type']);
$null=strtoupper($r2['Null']);
$default=strtoupper($r2['Default']);
if (in_array($type,$types)) {
if ($null=='YES') $null='NULL';
else $null='NOT NULL';
if (!empty($default)) $default='DEFAULT '.$default;
$sql='ALTER TABLE `'.$table.'` MODIFY COLUMN `'.$field.'` '.$type.' CHARACTER SET '.
$charset.' COLLATE '.$charset.'_turkish_ci '.$null.' '.$default;
mysql_query($sql);
} // if
} // while
echo "\n
$table tablosu içindeki alanların karakter seti değiştirildi";
} // while
Böyyük Patron Tarafından 23-09-2008 Tarihinde Gönderilmiştir.   Bu Konuyu Yazdır
Kaynak : http://perfectgate.net

 

En Son Eklenenler
php
php css ve js dosyalarının cacheden okunmasını engellemek
php
Dosya çalıştırılabilir mi is_executable()
php
Dosya yazılabilir mi is_writable()
php
Dosya okunabilir mi is_readable()
php
Dosya mı, dizin mi is_file() ve is_dir()
php
php Dosya var mı file_exits()
php
PHP include ve require
php
PHP URL Kodları
php
php formlardan gelen verileri almak
php
php web sunucusu değişkenlerini öğrenmek
php
php class (nesne) oluşturmak
php
php dizileri sıralama asort() ve ksort()
php
Diziden kesit alma array_slice()
php
php Dizinin ilk elemanını silme array_shift()
php
php Dizilere değişken ekleme array_push()
php
php Dizileri birleştirme array_merge()
php
php Dizi değişkenleri kullanımı
php
php Dizi Değişken Oluşturmak
php
php Değişkenlerin kapsamı: global ve static
php
php Fonksiyona varsayılan değer vermek
php
php Döngüyü sürdürmek için continue deyimi
php
php Döngüyü sona erdirmek için break deyimi
php
php for döngüsü
php
php do..while döngüsü
php
php while döngüsü
php
php if veya switch kısa şekilde kullanma
php
php switch deyimi
php
php if Deyimi
php
php Tarih ve saat Verisi
php
php Sabit Değerler define
php
php Bir Arttırmak veya Azaltmak için
php
php Aritmetik işlemciler
php
php is_string() is_integer() is_double()
php
php intval(), doubleval(), doubleval()
php
PHP'de Degisken Turleri Kopyalama (Casting)
php
php değişkene atadığımız değerin türünü değiştirmek
php
php Veri Türleri
php
php Değişkenler
php
Include() ve Require() işlevleri
php
do ... while
İletişim : bpatron@codekodu.com
466864Kişi Tarafından Sitemiz Ziyaret Edilmiştir. 12 Kişi Online
Bugün 21 Saat 37 Dakikada Sitemizi Tekil 398 Kişi Ziyaret Etmiştir.
Dün Sitemizi Tekil 401 Kişi Ziyaret Etmiştir.
Sitemizi En Çok Tekil 13-07-2010 Tarihinde 482 Kişi Ziyaret Etmiştir.
Sitemizdeki bilgilerin büyük çoğunluğu alıntıdır.İlgili yazının yazarının veya kaynak sahibinin istemesi halinde ilgili yazı sitemizden kaldırılacaktır.
Sitemizin İmalatı Böyyükpatron Tarafından Yapılmıştır.