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 で行う
try{ }catch(PDOException $e){ echo $e->getMessage(); exit; } echo $e->getMessage();
はエラーメッセージの表示
PDOでDB接続は
$dbh = PDO(DSN,DB_USER, DB_PASSWORD);
で行う
この大文字は config.php で設定した定数
次に、DBを参照し
すでに指定したユーザがいるなら、そのユーザを使い
存在しないのなら新規にDBへ格納する
まずは、存在の有無を確認
$sql ="select * from usrs where tw_user_id = :id limit 1"; $stmt =$dbh->prepare($sql); $stmt->execute(array(":id"=>$me->id_str));
で実行できる
もしユーザがいるなら
$user = $stmt->fetch();
で$userに情報が格納される
もし、$user の中身が空なら、指定したユーザは存在しないのでDBへ追加していく
この判定をするには
if(!$user){
とすればOK
DBへ新しくデータを入れるには
$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() としているのは、現在時刻を使うから