スキップしてメイン コンテンツに移動

【PHP】Postgresqlのselectやupdateメモ

ちょっと、PHPからPostgresqlのテーブルへアクセスしたいなって時に、使い回し出来そうなサンプルプログラム。

<?php
/**
* ConnnectDBクラス
*/
class ConnnectDB {
// データベース設定
private $server = "localhost";
private $user = "username";
private $password = "password";
private $dbname = "database";
private $count = 0;

/**
* コンストラクタ
*
* @return void
*/
function ConnnectDB()
{
$cnstr="host=".$this->server
." port=5432 dbname=".$this->dbname
." user=".$this->user
." password=".$this->password;
pg_connect($cnstr);
}

/**
* テーブルからレコード取得
*
* @return objects
*/
function getRecord()
{
if(!($result = pg_exec("select * from table")) ){
return "-1";
}

$this->count = pg_numrows($result);

return $this->_convertObject($result, $this->count);
}

/**
* レコードの件数取得
*
* @return レコード件数
*/
  function getCount() {
return $this->count;
  }

/**
* update
*
* @param $updates アップデートさせたいカラム名の配列
* @return bool
*/
function update($updates)
{
$sets = array();
foreach ($updates as $key=>$value) {
$value = $this->_escape($value);
$tmp = "$key = '$value'";
array_push($sets, $tmp);
}
$set = join(",", $sets);

$sql = "update table set $set";
// echo $sql;
$result = pg_exec($sql);

return $result;
}

/**
* パラメータのエスケープ
*
* @param $str
* @return エスケープされたデータ
*/
function _escape($str)
{
$escaped = pg_escape_string($str);
return $escaped;
}

/**
* 結果セットをオブジェクトの配列で返却
*
* @param &$result
* @return objects
*/
function _convertObject($result, $ct)
{
$ret = array();
for ($i = 0; $i < $ct; $i++) {
$obj = pg_fetch_array($result,$i);
array_push($ret, $obj);
}
return $ret;
}

}

?>


updateメソッドには、where句で更新対象レコードを絞れるようにしておきたい。このクラスの使い方は、こんな感じで。insert文は今回は作成せず・・・(;^_^A





<?php
require_once 'ConnnectDB.php';

$db = new ConnnectDB();

// テーブルデータ取得
$record = $db->getRecord();

echo "<pre>";
print_r($record);
echo "</pre>";

// テーブルデータの更新
$update["title"] = "test title";
$update["timerecorder"] = date("Y-m-d H:i:s");

$result = $db->update($update);
?>

コメント

このブログの人気の投稿

GolangでWindows GUIアプリケーション

GUIアプリ作成の前提 社内ツールとしてexeで配布 開発環境はGoLandを使う 社内ツールとしてexeを配布ということであれば、Visual StudioでC#による開発だと思います。しかしながら、Go言語を習得したいのと、GoLandの補完機能が便利で、Android Studio使っていたこともあり、とっつきやすいという点からGo縛りでGUIアプリケーションを考えたいと思います。 lxn/walk Windows application library kit for Go. Windows向けしか考えていないので、まずこのライブラリなのですが、ボタンやコンボボックスが思ったように並ばなかったり、手軽にイメージボタンを配置したりなど、簡単にレイアウトを変更できない課題に直面しました。レイアウト作成だけで時間を取られてしまいます。そう言えば、Androidアプリ開発のときは、XMLでデザイン部分を切り離してたのを思い出して、今回の調査の運びとなりました。 fyne-io/fyne Cross platform native GUIs designed for Go based on Material Design. Supports: Linux, macOS, Windows, BSD, iOS and Android. walkと比べると、クロスプラットフォームで作成できるのですが、こちらもコードの中にデザインを書いていく形でした。 therecipe/qt therecipe/qt allows you to write Qt applications entirely in Go or JavaScript. Qt Creatorなるものがあるようで、デザイン部分を切り離せる印象はあるものの、最新のPCでもビルドに時間がかかるようで、学習コストもかかるという記事を見かけて断念しました。 どうしたものかとツイートしましたら、下記のようにご助言をいただいた。 同じ課題に対し色々試した結果、PWAのフルキャッシュドに落ち着いた。中身はGo+WASMで。 https://t.co/e60whDTV16 — のぼのぼ📡 (@nobonobo) July 21, 2020 PWA 早速調べてみました。Googleが進めているプロジェクトで、ネイティブアプリのよ

Eclipseで一通り基本的なGitを使ってみる

備忘録的にまとめておきたいと思います。おかしな点があればご指摘いただければ幸いです。 目次 環境 プロジェクト作成~初コミットまで コミットの履歴&差分を見る 元に戻す ブランチについて ブランチを作成してみる ブランチを統合するには マージする Rebaseする ローカルリポジトリからプロジェクトを取り込む コミットしたメッセージの修正 環境 Eclipse IDE for Java Developers:Juno Service Release 1 Git:上記Eclipseのプリインストール版

Javaでprivateなfieldやmethodにアクセスする

JUnitでテストしてると、privateなフィールドにアクセスして、値を参照したりセットしたりしたくなるわけですが、よく使うのでメモしておきます。 例えば、次のような対象のクラスがあるとします。 public class ParentClass { private String hoge = "ParentClass!!"; public void dispMsg() { System.out.println("dispMsg:" + hoge); } private void privateDispMsg(String msg) { System.out.println("dispMsg:" + msg); } }