PHP Postgre SQL CRUD

php

少し進んだ。一通りのことはできたかなと。慣れてくればMySQLと同じように扱えそう。

●create
これは、「pgAdmin」ツールでやった方が面倒ない。idなどのオートインクレメント型指定が簡単にできる。使い込めば中々いいツールになるかもしれない。
そうそう、既存内容の編集はフリーの「A5:SQL」。GUIのデザインはあか抜けないけど便利そうだ。
●index.html

<html>
<head><title>PostgresSQL</title></head>
<body>
<p><a href ="show.php">表示</a></p>
<p><a href ="add.html">追加</a></p>
</body>
</html>

●show.php

<html>
<head><title>PHP TEST</title></head>
<body>
<p><a href="index.html">メニュー</a></p>
<?php
$conn = "host=localhost dbname=postgres user=postgres password=postgres";
$link = pg_connect($conn);
if (!$link) {
    die('接続失敗です'.pg_last_error());
}
//SQLの実行
$result = pg_query($link, "SELECT * FROM staff order by Id desc");
//データの取得
$arr = pg_fetch_all($result);

echo "<table border='1' cellspacing='0' cellpading ='8' >";
$flds = pg_num_fields($result);
echo "<tr>";
for($i=0; $i<$flds; $i++)
{
  $field = pg_field_name($result, $i);
  echo "<th> ".$field." </th>";
}
echo "</tr>";

for ($i = 0 ; $i < pg_num_rows($result) ; $i++){
    $rows = pg_fetch_array($result, NULL, PGSQL_ASSOC);
    echo "<tr><td><center>".$rows['id']."</center></td>";
    echo "<td>".$rows['name']."</td>";
    echo "<td><center>".$rows['age']."</center></td/></tr>";
}
echo "</table>";

$close_flag = pg_close($link);
?>
</body>
</html>

●add.html

<html>
<head><title>PHP TEST</title></head>
<body>
<p><a href="index.html">メニュー</a></p>
<form action="./add.php" method="post">
<p>名前:<input type="text" size="20" name="name" value=""></p>
<p>年齢:<input type="text" size="20" name="age" value=""></p>
<p><input type="submit" value="送信"><input type="reset" value="リセット"></p>
</form>
</body>
</html>

●add.php

<html>
<head><title>Add member</title></head>
<body>
<p><a href="index.html">メニュー</a></p>
<?php
$conn = "host=localhost dbname=postgres user=postgres password=postgres";
$link = pg_connect($conn);
if (!$link) {
    die('接続失敗です'.pg_last_error());
}
$name = $_POST['name'];
$age  = $_POST['age'];
//SQLの実行
$sql  = "INSERT INTO staff ( name, age) VALUES ( ";
$sql .= "'". $name."'";
$sql .= ",$age)";
$result_flag = pg_query($sql);
if (!$result_flag) {
    die('INSERTクエリーが失敗しました。'.pg_last_error());
}
$close_flag = pg_close($link);
?>
</body>
</html>

●参考

c>psql -U postgres
PWD: postgres

#"help";
-- help短縮型
#\h

-- quit
#CTRL + c
or #\q

\l <-- show databases;
\d <-- show tables;
\du <-- user名を表示
\d table <-- table 詳細 describe
データベース名を入れるとそのデータベースに接続

createuser user name
createdb データベース名

#aoc
#select * from staff;

#drop table xxxx

// IdはAutoincrement型なので以下のようにしてインサートする。
#insert into staff(name,age)Values('june',23);

●以下を得ました。(多謝)(http://developpp.blog.jp/archives/8224244.html)

postgres – シーケンス inser時に自動採番
inser文発行時に自動採番する方法

serial型

テーブルを作成する際に、自動的に番号を採番したいフィールドに対しserial型を指定する。
※serial型を指定すると自動的にシーケンスが作成される。

create table sequence_test (
auto_no serial ,
name varchar(50),
primary key(auto_no)
);

insert into sequence_test (name) values(‘test1’);
insert into sequence_test (name) values(‘test2’);

select * from sequence_test;
–auto_no, name
–1, test1
–2, test2

–sequence_test_auto_no_seqというシーケンスが自動的に作成され連番を振っている。

シーケンスを作成しcreta tableに組み込む

テーブルを作成する際に、あらかじめ作成したシーケンスを指定する。

create sequence sequence_test_seq;

create table sequence_test (
auto_no int DEFAULT nextval(‘sequence_test_seq’),
name varchar(50),
primary key(auto_no)
);

insert into sequence_test (name) values(‘test1’);
insert into sequence_test (name) values(‘test2’);

select * from sequence_test;
–auto_no, name
–1, test1
–2, test2

No tags for this post.
タイトルとURLをコピーしました