+<?php\r
+require_once(dirname(__FILE__)."/configure.phpl");\r
+/* 変更不可定数 */\r
+$ZUBORA = array();\r
+define("ADDR_ECHO", 0);\r
+define("ADDR_GET_INFOMATION", 0);\r
+define("ADDR_GET_BALANCE", 1);\r
+define("DB_CONNECT",DB.":host=".DB_HOST.";dbname=".DB_NAME);\r
+define("PREFIX_SEP_DB","_");\r
+define("PREFIX_SEP_MAIL",".");\r
+define("TBL","books,users,mails,subscribes,himoku,balance");\r
+$ZUBORA["tables"] = explode(",",TBL);\r
+foreach($ZUBORA["tables"] as $table){\r
+ define("TBL_".strtoupper($table),PREFIX.PREFIX_SEP_DB.$table);\r
+}\r
+\r
+/* ライブラリ */\r
+\r
+//データベース入出力クラス\r
+class ZuboraDB{\r
+ var $isConnected = false;\r
+ var $queryResult = null;\r
+ var $pdo = null;\r
+ var $ERROR = "";\r
+ function ZuboraDB(){}\r
+ function connect(){\r
+ if(!$this->isConnected){\r
+ try{\r
+ $this->pdo = new PDO(DB_CONNECT,DB_USER,DB_PASSWORD);\r
+ $this->isConnected = true;\r
+ return true;\r
+ } catch (PDOException $e) {\r
+ $this->ERROR .= "DB connection error!: " . $e->getMessage() . "\n";\r
+ throw new Exception($this->ERROR);\r
+ }\r
+ }\r
+ }\r
+ /*\r
+ function query($sql){\r
+ $this->connect();\r
+ return $this->pdo->query($sql);\r
+ }\r
+ function closeCursor(){\r
+ return $this->pdo->closeCursor();\r
+ }\r
+ */\r
+ function isExist($table){\r
+ if (preg_match("/^[_\-a-z0-9]+$/i",$table)){\r
+ $q = $this->pdo->prepare("SELECT * FROM ".$table.";");\r
+ return $q->execute();\r
+ }else{\r
+ throw new Exception("Charactor Error!: table name must be [-_0-9a-zA-Z]+\n");\r
+ }\r
+ }\r
+ function getBook($book,$domain){\r
+ $this->connect();\r
+ $stmt = $this->pdo->prepare("SELECT * FROM ".TBL_BOOKS." WHERE book = ? and domain = ?;");\r
+ $stmt->bindParam(1, $book, PDO::PARAM_STR,30);\r
+ $stmt->bindParam(2, $domain, PDO::PARAM_STR,250);\r
+ if(!$stmt->execute()){\r
+ $er = $stmt->errorInfo();\r
+ $this->ERROR .= $er[2];\r
+ return false;\r
+ }else{\r
+ return $stmt->fetch(PDO::FETCH_ASSOC);\r
+ }\r
+ }\r
+ function getMainMailAddr($from){\r
+ $this->connect();\r
+ $stmt = $this->pdo->prepare("SELECT mail FROM ".TBL_MAILS." WHERE submail = ?;");\r
+ $stmt->bindParam(1, $from, PDO::PARAM_STR,250);\r
+ if(!$stmt->execute()){\r
+ $er = $stmt->errorInfo();\r
+ $this->ERROR .= $er[2];\r
+ return false;\r
+ }else{\r
+ $result = $stmt->fetch(PDO::FETCH_ASSOC);\r
+ if(false === $result){\r
+ $this->ERROR .= "error! mail addr not found!\n";\r
+ return false;\r
+ }else{\r
+ return $result["mail"];\r
+ }\r
+ }\r
+ }\r
+ function isSubscribed($book,$mail){\r
+ $this->connect();\r
+ $stmt = $this->pdo->prepare("SELECT * FROM ".TBL_SUBSCRIBES." WHERE book = ? and mail = ?;");\r
+ $stmt->bindParam(1, $book, PDO::PARAM_STR,30);\r
+ $stmt->bindParam(2, $mail, PDO::PARAM_STR,250);\r
+ if(!$stmt->execute()){\r
+ $er = $stmt->errorInfo();\r
+ $this->ERROR .= $er[2];\r
+ return false;\r
+ }else{\r
+ if(false === $stmt->fetch(PDO::FETCH_ASSOC)){\r
+ return false;\r
+ }else{\r
+ return true;\r
+ }\r
+ }\r
+ }\r
+ function getHimoku($book,$himoku){\r
+ $this->connect();\r
+ $stmt = $this->pdo->prepare("SELECT * FROM ".TBL_HIMOKU." WHERE book = ? and himoku = ?;");\r
+ $stmt->bindParam(1, $book, PDO::PARAM_STR,30);\r
+ $stmt->bindParam(2, $himoku, PDO::PARAM_STR,30);\r
+ if(!$stmt->execute()){\r
+ $er = $stmt->errorInfo();\r
+ $this->ERROR .= $er[2];\r
+ return false;\r
+ }else{\r
+ return $stmt->fetch(PDO::FETCH_ASSOC);\r
+ }\r
+ }\r
+ function addBalance($book,$himoku,$val,$mail,$note){\r
+ $this->connect();\r
+ $stmt = $this->pdo->prepare("INSERT INTO ".TBL_BALANCE." (id,book,himoku,val,mail,note,date) VALUES (?,?,?,?,?,?,CURRENT_TIMESTAMP);");\r
+ $stmt->bindParam(1, md5(uniqid()), PDO::PARAM_STR,32);\r
+ $stmt->bindParam(2, $book, PDO::PARAM_STR,30);\r
+ $stmt->bindParam(3, $himoku, PDO::PARAM_STR,30);\r
+ $stmt->bindParam(4, $val, PDO::PARAM_INT);\r
+ $stmt->bindParam(5, $mail, PDO::PARAM_STR,250);\r
+ $stmt->bindParam(6, $note, PDO::PARAM_STR);\r
+ if(!$stmt->execute()){\r
+ $er = $stmt->errorInfo();\r
+ $this->ERROR .= $er[2];\r
+ return false;\r
+ }else{\r
+ return true;\r
+ }\r
+ }\r
+}\r
+?>
\ No newline at end of file