コマンドプロンプトからのSQL文はsjis



自分で小さなクラスファイルを書いていて、動作がなんだか心配なので、MySQLとのやり取りを、ローカルで実験しようと思ったのですが、意外と引っかかり、備忘のためのメモに残すことにしました。




背景画像:wikipedia:鉛筆




WindowsにインストールしたMySQLへのインサート文などをコマンドプロンプトから入力しようとしたら、日本語が入力できませんでした。



コマンドプロンプトは、sjisしか扱えないのかもしれません。


mysql> set NAMES 'sjis';

インサート文を書く前に上の一行を追加



コマンドプロンプトで日本語に切り替えるときには、altキーを一緒に




レコードの取り出しでも、文字化けが発生しました。phpMyAdmin等は、正常に表示されている。(utf8)

my.iniは default-character-set=utf8 



<?php
mysql_connect($host, $user, $password);

$sql 	= "SET CHARACTER SET utf8";
mysql_query($sql);
mysql_select_db($database);
$query = "select * from counter";
$result = mysql_query($query);

while ($row = mysql_fetch_assoc($result)) {
    echo $row["id"]."      ";
	echo $row["tag"]."      ";
    echo $row["time"]."<br>";
}
mysql_free_result($result);

で、文字化けは解消しました。

スクリプトからは、SET NAMES を 使ってはいけないらしい。

see:SET NAMESは禁止
$sql = "SET NAMES utf8";


PEARを使ってみる。

<?php
require_once 'MDB2.php';

$dsn = array(
'phptype'  => 'mysql',
    'username' => '',
    'password' => '',
    'hostspec' => 'localhost',
    'database' => 'test'
);
 

//接続 

$mdb2 =& MDB2::factory($dsn); 
$sql 	= "SET CHARACTER SET utf8 ";
$mdb2->query($sql);
$mdb2->setFetchMode(MDB2_FETCHMODE_ASSOC); 
$result = $mdb2->queryAll('SELECT * FROM counter'); 
echo "<pre>";
print_r($result); 
echo "</pre>";


PEAR MDB2のインストール


コマンドプロンプト

Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\SAMPLE>pear install mdb2;
downloading MDB2-2.4.1.tgz ...
Starting to download MDB2-2.4.1.tgz (119,790 bytes)
..........................done: 119,790 bytes
install ok: channel://pear.php.net/MDB2-2.4.1
MDB2: Optional feature fbsql available (Frontbase SQL driver for MDB2)
MDB2: Optional feature ibase available (Interbase/Firebird driver for MDB2)
MDB2: Optional feature mysql available (MySQL driver for MDB2)
MDB2: Optional feature mysqli available (MySQLi driver for MDB2)
MDB2: Optional feature mssql available (MS SQL Server driver for MDB2)
MDB2: Optional feature oci8 available (Oracle driver for MDB2)
MDB2: Optional feature pgsql available (PostgreSQL driver for MDB2)
MDB2: Optional feature querysim available (Querysim driver for MDB2)
MDB2: Optional feature sqlite available (SQLite2 driver for MDB2)
MDB2: To install optional features use "pear install pear/MDB2#featurename"

C:\Documents and Settings\SAMPLE>pear install MDB2_Driver_mysql;
downloading MDB2_Driver_mysql-1.4.1.tgz ...
Starting to download MDB2_Driver_mysql-1.4.1.tgz (36,481 bytes)
..........done: 36,481 bytes
install ok: channel://pear.php.net/MDB2_Driver_mysql-1.4.1
C:\Documents and Settings\SAMPLE>



























.

TOP