twitter ユーザ情報をDB格納
3ヶ月前につまづいたところが
ようやく解決したので
#09 ユーザー情報を格納してみよう (1)
http://dotinstall.com/lessons/tw_connect_php_v2/21909
を参考に
認証したユーザの情報をDBに格納していく
注意点としては
twitter id は 64bit の整数のため
32bit OS では数値として正しく扱えないとのこと
このため twitter API では
id の文字列表現を
id_str に入れている
32bit OSなら $me->id_str だけど
64bit OSなら $me->id でもOKらしい
とりあえず、これに注意しながら行っていく
DB接続処理は、callback.php へ追記していく
DB接続は PDO形式で行い try catch で行う
1 2 3 4 5 6 7 8 | try { } catch (PDOException $e ){ echo $e ->getMessage(); exit ; } echo $e ->getMessage(); |
はエラーメッセージの表示
PDOでDB接続は
1 | $dbh = PDO(DSN,DB_USER, DB_PASSWORD); |
で行う
この大文字は config.php で設定した定数
次に、DBを参照し
すでに指定したユーザがいるなら、そのユーザを使い
存在しないのなら新規にDBへ格納する
まずは、存在の有無を確認
1 2 3 4 | $sql = "select * from usrs where tw_user_id = :id limit 1" ; $stmt = $dbh ->prepare( $sql ); $stmt ->execute( array ( ":id" => $me ->id_str)); |
で実行できる
もしユーザがいるなら
1 | $user = $stmt ->fetch(); |
で$userに情報が格納される
もし、$user の中身が空なら、指定したユーザは存在しないのでDBへ追加していく
この判定をするには
1 | if (! $user ){ |
とすればOK
DBへ新しくデータを入れるには
1 2 3 | $sql ="insert into users (tw_user_id,tw_screen_name,tw_access_token,tw_access_token_secret,createdmodified) values( :tw_user_id,:tw_screen_name,:tw_access_token,:tw_access_token_secret,now(),now())"; |
というようにプレースホルダーを利用したSQLを使う
now() としているのは、現在時刻を使うから