DB接続/更新/検索クラスもどき
postgres.php
<?php class postgres { function connect() {//接続 try{ //接続定義呼び出し require('user_cnf.php'); $dbconn=pg_connect("host=".$host." dbname=".$db." user=".$user." password=".$pass); $bs=pg_connection_busy($dbconn); if($bs) {//接続がビジー exit('connection is busy'); } return $dbconn; } catch (string $e) { echo'ERROR_MES=>'.$e.'<br>'; error_mes(); } } function select($sql) { $mes=FALSE; //コネクト $db_class=new postgres(); $dbconnect=$db_class->connect(); $result=pg_query($dbconnect,$sql); if($result) {//ヒット $cnt2=0; $array=null; for($cnt=0;$row=pg_fetch_array($result);$cnt++) { while($str=each($row)) { $encoding=mb_detect_encoding($str['value'],"UTF-8,EUC-JP"); if($encoding!="UTF-8") {//UTF-8以外なら //コード変換 $array[$cnt2][$str['key']]=mb_convert_encoding($str['value'],"UTF-8",$encoding); } else { $array[$cnt2][$str['key']]=$str['value']; } } $cnt2++; } $mes=json_encode($array); } //切断 pg_close($dbconnect); return $mes; } function update($sql) { try{ $mes=null; $db_class=new postgres(); $dbconnect=$db_class->connect(); $result=pg_query($dbconnect,$sql); if($result) {//アップデート成功 $mes=true; } else { $mes=false; } //切断 pg_close($dbconnect); return $mes; } catch (string $e) { echo'ERROR_MES=>'.$e.'<br>'; error_mes(); } } function inset($sql) { try{ $mes=null; //コネクト $db_class=new postgres(); $dbconnect=$db_class->connect(); $result=pg_query($dbconnect,$sql) or die('pg_error!!=>'.pg_last_error()); if($result) {//インサート成功 $mes=true; } else { $mes=false; } //切断 pg_close($dbconnect); return $mes; } catch (string $e) { echo'ERROR_MES=>'.$e.'<br>'; error_mes(); } } function error_mes() { exit('pg_error!!=>'.pg_last_error()); } } ?>
user_cnf.php
<?php //ユーザー定義 $user="postgres"; $pass="postgres"; $db="mydb"; $host="localhost"; ?>
使用例・検索
<?php $sql="SELECT * FROM test"; require_once('postgres.php'); $db_class=new postgres(); $req=$db_class->select($sql); $mes=json_decode($req); //mesに戻り値が入ってる ?>
sql文引き渡すというトンでも仕様
…でも一番直感的なんだよなー