これは私がデータベースに接続する方法です:
$dbh = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=C:\\xampp\\htdocs\\bd\\db\\icr.accdb;Uid=Admin");
私のデータベースには、ポリッシュ文字を含むデータとフィールドがあるため、ファイルが ANSI でエンコードされている場合にのみ SQL クエリが機能します。しかし、私のウェブサイト全体には文字セット utf8 があります (ポーランド語の文字もたくさんあります)。では、データベースの文字セットを utf8 に変更する方法はありますか?
私はこれを試していました:
$dbh->exec("set names utf8");
この:
$dbh = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=C:\\xampp\\htdocs\\bd\\db\\icr.accdb;Uid=Admin", null, null, array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
));
しかし、どちらも機能しませんでした。何か案は?
//なぜphpでアクセスデータベースを使うのか聞かないでください -> 私は大学のプロジェクトでそれを使わなければなりません:/
編集: コード:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<body>
<?php
try{
// Connect
$dbh = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=C:\\xampp\\htdocs\\bd\\db\\icr.accdb;Uid=Admin");
$dbh->exec("set names utf8");
$sql = "SELECT * FROM Miasta";
$myFile = "testFile.txt";
$fh = fopen($myFile, 'w') or die("can't open file");
foreach ($dbh->query($sql) as $row)
{
echo $row['Nazwa'] .' - '. $row['IDWojewództwa'] . '<br />';
$stringData = $row['Nazwa'] .' - '. $row['IDWojewództwa'] . '<br />';
fwrite($fh, $stringData);
}
fclose($fh);
/*** close the database connection ***/
$dbh = null;
}
catch(PDOException $e)
{
echo $e->getMessage();
}
?>
</body>
</html>