職案人

求職・歴史・仏教などについて掲載するつもりだが、自分の思いつきが多いブログだよ。適当に付き合って下さい。

PDOの利用

2017年07月25日 | PHP
データベースのPDO利用について


【開発環境】
xampp 1.8.3
PHP 5.5.9

【PDOとは】
・PDO(PHP Data Object)は、PHP 5から利用できるデータアクセス抽象化レイヤです。PDOを利用すると、高機能で共通化されたインターフェイスとPHP 5の機能をふんだんに使ったデータアクセスを実現できます。

・PEAR::DBとの違い
PEAR::DBやPEAR::MDBなどは、PHPで用意されている多くのネイティブなデータベースアクセスのための関数をPHPスクリプトでまとめ、共通のAPIを提供しています。

しかしながら、その共通のAPIを提供している部分はPHPスクリプトで書かれているため、速度面での期待はできません

【PDOを利用するには】
・PHP 5.3バージョン以上の場合
まず、先に「php.ini」ファイルの設定を行う、php.iniの「Windows Extensions」と書かれた箇所を検索して

extension=php_mysql.dll
extension=php_pgsql.dll
のセミコロン(;)を削除すると、MySQLとPostgreSQLが利用出来る様になる。

更に、データベースとしてMySQL、PostgreSQL、SQLiteの3つを利用するならば
extension=php_pdo_mysql.dll
extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
のセミコロン(;)を削除しておく

以上の設定が終えたら、「php.ini」ファイルを保存した後、Apacheを再起動する。

注意、PHP 5.3バージョン以上で、extension=php_pdo.dllを追加すると、アパッチがエラー表示を出す

設定が終わったら、phpinfo()に下記のように表示される


【PDOクラスコンストラクタとDSNの記述】
1)MySQLのDSN(データ・ソース・ネーム)
mysql:dbname=db_name;host=host_name;port=port_no
例文
mysql:dbname=test;host=localhost
or
mysql:dbname=test;host=localhost:port=3306

2)pgsql:dbname=db_name;host=host_name;port=port_no;user=user_name;pass=password
例文
pgsql:dbname=test;host=localhost;port=5432
or
pgsql:dbname=test;host=localhost;port=5432;user=hoge;pass=hoge

3)SQLiteのDSN
sqlite:db_name
SQLiteでディスク上のデータベースに接続するには絶対パスでデータベースの位置を指定します。
sqlite:d:¥¥sqlite¥¥test

【データベースへの接続方法】
☆MySQLの場合
データベース「uriage」、テーブル「shouhin」、userも、passも、「testuser」とする。

1)mysql_connect()関数を利用する場合
$link = mysql_connect('localhost', 'user', 'pass');

// MySQLに対する処理

mysql_close($link);

参照サイト→「mysql_close」関数

2)PDOクラスを利用する場合
$dsn = 'mysql:dbname=uriage;host=localhost';
$user = 'testuser';
$password = 'testuser';

try{
//PDOクラスのオブジェクト作成
$dbh = new PDO($dsn, $user, $password);
}catch (PDOException $e){
print('Error:'.$e->getMessage());
die();
}
参照サイト→PDOクラス利用

「pdotest1.php」サンプル
<html>
<head><title>PDOクラス</title></head>
<body>
<?php

$dsn = 'mysql:dbname=uriage;host=localhost';
$user = 'testuser';
$password = 'testuser';

try{
$dbh = new PDO($dsn, $user, $password);

print('接続に成功しました。<br>');
  文字コードは自分の環境に合わせる
$dbh->query('SET NAMES UTF-8');
$sql = 'select * from shouhin';
foreach ($dbh->query($sql) as $row) {
print($row['id']);
print($row['name'].'<br>');
}
}catch (PDOException $e){
print('Error:'.$e->getMessage());
die();
}
$dbh = null;

?>
成功すれば表示される
コメント

pgAdminⅲ操作について

2017年07月18日 | PostgreSQL
pgAdminⅲ操作について


【環境条件】
win10 PostgreSQL 9,5 pgAdminⅲ

【pgAdminⅲのインストール】 PostgreSQLのダウンロード及びインストールを参照すること、必ずPostgreSQL-9.5バージョンを選ぶことじゃないと、pgAdminⅲの日本語版が手に入らない

【pgAdminⅲの操作】
1)像のアイコンをクリックし、pgAdminⅲを立ち上げる

2)もし、サーバーグループにサーバが無かったら、サーバー作成をする

3)メニューバーの「ファイル」から「サーバーの追加」をクリックする

4)「新しいサーバ登録」ダイアログが現れたら、値を設定する

パスワードはインストール時に設定したもの
設定値

以上で、サーバー(1)の下にPostgreSQL 9.5が表示される

5)サーバとの接続 サーバーのアイコンに「×」マークがついていた場合は、まだ接続されていない為、接続する 「PostgreSQL 9.5」をクリックして、「接続」を選ぶ、接続できると「×」マークが消える。

接続後


6)データベースの作成 「データベース」を右クリックし、コンテキストメニューから「新しいデータベース」をクリックする


7)「新しいデータベース」ダイアログが表示される

・「プロパティ」タブの設定を行う

・「定義」タブの設定をしたら「OK」ボタンを押す


8)データーベース「testDB」が表示 「×」マーク付きの「testDB」が現れる。それをクリックすると、データーベースが選択され、「×」マークが消える。

9)テーブルの作成
サンプルとしてstaffテーブルを作成する

「sampleDB」データベースを選択し、「スキーマ」→「public」とツリーを展開します。その中に「テーブル」という項目があるので、右クリックし、コンテキストメニューから「新しいテーブル」をクリックする


10)「新しいテーブル」ダイアログボックスが表示
「列」タブを選んで、右下にある「追加」ボタンをクリックする


11)列の作成
名前:id、データ型:integerを設定したら、「OK」ボタンを押す

成功すると、下記のように表示される


12)同じように「name」「age」列の作成
なお、「name」列に関してはNOT NULL制約を付与するため、「定義」タブをクリックする

「NOT NULL」チェックボックスにチェックを入れ、「OK」ボタンを押す


13)制約の追加
「id」「age」列に対して制約を与える為、「制約」タブをクリックし、画面下のプルダウンメニューで「主キー」が選択されいることを確認し、「追加」ボタンをクリックする


14)「新しい主キー」ダイアログより、「id」の制約をする
「列」欄に「id」を選択し、「追加」ボタンをクリックし、「OK」ボタンを押す。


15)「新しい主キー」ダイアログより、「age」の制約をする
画面下のプルダウンメニューで「チェック」を選択し、「追加」ボタンをクリックする


16)「新しいチェック」ダイアログの設定
「定義」タブの「チェック」欄に「age > 0」と入力し、「OK」ボタンをクリックする

「新しいテーブル」ダイアログに戻る


17)テーブル名の設定
名前:staff、
オーナー;postges
に設定したら、最後に「OK」ボタンを押す


18)テーブルの完成


19)データの登録
オブジェクトブラウザのツリーから「staff」テーブルを右クリックし、コンテキストメニューから「データビュー」-「全ての列を表示」をクリックする


20)「編集データ」ダイアログが表示
1行(レコード)ずつ、適当なデータを入力する。
列にデータを入れたら、Tabキーで隣の列に移動し、またデータを入力する。各列にデータを入力し終えたら、Enterキーを押下すれば、その時点でデータは登録される。
※列幅は境界線をクリックすると、調整できる

全データを入力し終えたら、「編集データ」ダイアログの✗印をクリックして閉じる

21)データの削除
・「編集データ」ダイアログを立ち上げる
「staff」テーブルをクリックして、バーの所の「ビュー」アイコンをクリック

・「編集データ」ダイアログが表示される

・削除したい行をクリックする

・「ゴミ箱」アイコンをクリックする

・確認ダイアログが表示される

・削除完了


以上
それ以外の操作→PostgreSQLではじめるDB入門を参照のこと
コメント

PostgreSQLでテーブルを作成するには

2017年07月12日 | PostgreSQL
PostgreSQLでテーブルを作成するには


■SQL文(クエリー)について
SQL言語は、データーベースを操作する言葉のため、殆どのデーターベースに対応するので、自分にあったデーターベースと共にSQL言語を学んでください
PostgreSQL→PostgreSQL 9.4.5文書

PostgreSQLの基本コマンド


■テーブル
1)テーブル作成
SQL文(クエリー)
create table table_name
(column_name1 column_type, column_name2 column_type, …);


2)テーブル定義の確認
sample1=# create table test10(id integer, name text,address text);
CREATE TABLE
sample1=# ¥d test10
テーブル "public.test10"
列 | 型 | 修飾語
---------+---------+--------
id | integer |
name | text |
address | text |

3)テーブル削除
SQL文
sample1=# drop table test10;
DROP TABLE
sample1=# ¥d
リレーションの一覧
スキーマ | 名前 | 型 | 所有者
----------+------+----------+----------
public | test | テーブル | postgres
(1 行)

sample1=#

4)デフォルト値の設定
SQL文
create table table_name
(column_name1 column_type DEFAULT default_value, …);


5)NOT NULL制約
カラムにNULL値を持つ事が出来ないように設定する
SQL文
create table table_name
(column_name1 column_type NOT NULL, …);
例文
sample1=# create table sample2(name text not null,address text);
CREATE TABLE
sample1=# insert into sample2(address) values('tokyo');
ERROR: 列"name"内のNULL値はNOT NULL制約違反です
DETAIL: 失敗した行は(null, tokyo)を含みます
sample1=# insert into sample2(name) values('yamada');
INSERT 0 1
sample1=#

6)UNIQUE制約
カラムに含まれる値は重複することが出来ないように設定する方法
SQL文
create table table_name
(column_name1 column_type UNIQUE, …);

C:\Users\hiromi>psql -U postgres
ユーザ postgres のパスワード:
psql (9.5.7)
"help" でヘルプを表示します.

postgres=#
sample1=# ¥d
リレーションの一覧
スキーマ | 名前 | 型 | 所有者
----------+---------+----------+----------
public | sample | テーブル | postgres
public | sample2 | テーブル | postgres
public | test | テーブル | postgres

データベース接続
postgres=# ¥c sample1
データベース "sample1" にユーザ"postgres"として接続しました。

テーブルの作成--UNIQUE制約
sample1=# create table sample3(name text unique,address text);
CREATE TABLE
sample1=# ¥d
リレーションの一覧
スキーマ | 名前 | 型 | 所有者
----------+---------+----------+----------
public | sample | テーブル | postgres
public | sample2 | テーブル | postgres
public | sample3 | テーブル | postgres
public | test | テーブル | postgres
(4 行)

データ入力SQL文
sample1=# insert into sample3(name,address) values('yamada','tokyo');
INSERT 0 1
sample1=# insert into sample3(name,address) values('yamada','osaka');
ERROR: 重複キーが一意性制約"sample3_name_key"に違反しています
DETAIL: キー (name)=(yamada) はすでに存在します
sample1=#

データ表示SQL文
sample1=# select * from sample3;
name | address
--------+---------
yamada | tokyo
(1 行)

7)PRIMARY KEY制約
カラムに含まれる値が完全に重複しないようする制約
SQL文
create table table_name
(column_name1 column_type PRIMARY KEY, …);

テーブル作成
sample1=# create table sample4(name text primary key,address text);
CREATE TABLE
データ入力
sample1=# insert into sample4(name,address) values('yamada','osaka');
INSERT 0 1
sample1=# insert into sample4(name,address) values('yamada','tokyo');
ERROR: 重複キーが一意性制約"sample4_pkey"に違反しています
DETAIL: キー (name)=(yamada) はすでに存在します
sample1=# insert into sample4(name,address) values('kobayasi','tokyo');
INSERT 0 1
sample1=# insert into sample4(name,address) values('','tokyo');
INSERT 0 1
表示
sample1=# select * from sample4;
name | address
----------+---------
yamada | osaka
kobayasi | tokyo
| tokyo
8)CHECK制約
行を追加する時に、許可するかどうかの条件を付ける制約
SQL文
create table table_name
(column_name1 column_type CHECK(条件式), …);
^
sample1=# create table sample5(id integer check(id > 10),name text);
CREATE TABLE
sample1=# insert into sample5(id,name) values(20,'yamada');
INSERT 0 1
sample1=# insert into sample5(id,name) values(8,'satou');
ERROR: リレーション"sample5"の新しい行は検査制約"sample5_id_check"に違反しています
DETAIL: 失敗した行は(8, satou)を含みます
sample1=# select * from sample5;
id | name
----+--------
20 | yamada
(1 行)

sample1=#
コメント

Visual Basic 2017 入門

2017年07月10日 | Visual Basic 2017
Visual Basic 2017 入門


Visual Studio のインストールについては
このWebを参考にしてね→プログラミングとゲームの杜
コメント

PostgreSQLのデーターベースに対するSQL文(クエリー)

2017年07月08日 | PostgreSQL
PostgreSQLのデーターベースに対するSQL文(クエリー)


■DB関するコマンド
1)PostgreSQLの接続・切断


2)データベースの確認方法
postgres=# ¥l


3)データベースの作成
SQL文
create database database_name;


3-1)データベースの作成時のオプション
/データベースのオーナーの指定
SQL文
create database database_name owner dbowner_name;


・まず、オーナ確認
コマンド
postgres=# ¥du


もし、他にユーザーが無かったら、ユーザーを作成する
SQL文
postgres=# create user sampleuser;


/データベースのエンコーディングの指定
SQL文
postgres=# create database sample3 encoding 'utf8';
CREATE DATABASE
utf8以外を指定すると、エラーが出る
postgres=# create database sample3 encoding 'SJIS';
ERROR: SJISは有効な符号化方式名ではありません

4)データベースの削除
SQL文
postgres=# drop database sample3;
DROP DATABASE


5)データベースの接続
コマンド
postgres=# ¥c sample1


■PostgreSQLで利用可能なデータ型
数値データ型
文字型
日付/時刻データ型
ネットワークアドレス型

SQL文は、基本的にどのデーターベースでも共通して使える命令文で、データーベースに対して発行するコマンド
コメント