データベースに単語リストを保存しようとしています。Wordlist は、utf-8 エンコーディングのテキスト ドキュメントです。そして、これが私のテーブル構造です。
CREATE TABLE IF NOT EXISTS `wordlist` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`kelime` char(64) COLLATE utf8_turkish_ci NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `kelime` (`kelime`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_turkish_ci AUTO_INCREMENT=1140209 ;
単語を追加する php コードを次に示します。
<?php
ini_set('max_execution_time', 3000);
$handle = @fopen("wordlist.txt", "r");
if ($handle) {
include("ekle.php"); // makes db connection
$sql = "insert into wordlist (kelime) VALUES (?)";
$dbh->beginTransaction();
$sth = $dbh->prepare($sql);
while (($buffer = fgets($handle, 4096)) !== false) {
$sth->execute(array(trim($buffer)));
}
if (!feof($handle)) {
echo "Error: unexpected fgets() fail\n";
$dbh->rollBack();
} else {
$dbh->commit();
}
fclose($handle);
}?>
私のデータベースのデフォルトの照合順序も utf-8_turkish_ci です。単語を追加すると、phpmyadmin で単語リストが正しく表示されません。
ここで何が間違っていますか?