2012年3月2日金曜日

amazon apiで獲得したデータをmysqlに保存する

XAMPPをインストールしたときにmysqlもインストールされているため、インストール方法については割愛。初期設定やmysqlの使い方は下記サイトを参考にした。
参考:MySQL初心者入門講座

Amazonからデータを取得する際に、既に保持しているデータとそうでないものを区別し、まだ持っていないデータのみを格納するようにしたいので、プライマリーキーをオートインクリメントさせる。
参考:dbonline - AUTO_INCREMENTの設定

とりあえず、こんな感じのテーブルを作ってみた。

create table book(
  pref_cd int(6) auto_increment,
  title varchar(50),
  author varchar(50),
  isbn varchar(20),
  imgurl_medium varchar(100),
  imgurl_large varchar(100),
  primary key(pref_cd)
);

mysqlの管理はphpmyadminでもできるようなので、以下のサイトを参考に新規ユーザの作成や権限の委譲を行った。
参考:adminweb - MySQLの設定と利用

phpからmysqlに接続するためにPDOを使用した。PDOはphpからmysqlへの接続を簡単にしてくれるAPIのような感じだと思われる。一応、コードをのせておく。

----------------------------------------------------------

// setting mysql parameter
$dsn = 'mysql:dbname=DBNAME;host=localhost;charset=utf8';
$user = 'USER';
$password = 'PASSWORD';

try{
$dbh = new PDO($dsn, $user, $password);
        $sql = "insert into book ('title','author',...) values ('?','?',...)";
$stmt = $dbh->query($sql);


        if (!$stmt) {
      die('INSERT query missed'.mysql_error());
}
if ($dbh == null){
      print('miss connection<br>');
}else{
      print('success connection<br>');
}

}catch (PDOException $e){
print('Error:'.$e->getMessage());
die();
}

-----------------------------------------------------------------

参考:phpbook - PDOの利用
書籍情報の獲得は過去エントリを参考にして行った。


このコードを使うことで、phpとmysqlの接続はできたが、titleとauthorに日本語を格納する際に文字化けが生じてしまった。様々なサイトを参考に色々いじった結果、なんとか日本語で保存できるようになった。正直、どれが効いたのかわからないので、一応修正した箇所を記録しておく。


【my.conf】
[client]

default-character-set = utf8



[mysqld]

character_set_server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8
default-character-set = utf8
skip-character-set-client-handshake



[mysqldump]

default-character-set=utf8



[mysql]

default-character-set=utf8



【php.ini】

default_charset= "utf-8";



最終的に、mysqldにskip-character-set-client-handshakeを追加することで日本語保存が可能になった。なお、phpファイルの記述形式もutf-8である。

0 件のコメント:

コメントを投稿