ポンクソフト

掲示板1 - PHPとPostgreSQLの連携入門

前ページ PHPとPostgreSQLの連携入門 TOP 次ページ

目次

  1. PHPとPostgreSQLの連携入門
  2. 掲示板1
  3. 掲示板2
  4. 5Wゲーム
  5. 販売管理システム
  6. 画像アップロード掲示板
  7. ショッピングカート

掲示板1

まず、本文だけの簡単な掲示板を作成してみましょう。

テーブルの作成

以下のようなテーブルを「pgbbs1」という名前で作成してください。
列名データ型
contentstext
psqlを使う場合は、以下のように入力します(# はプロンプト)。
# create table pgbbs1(contents text);

プログラムの作成

以下のソースを入力してください。但し
dbname=postgres user=postgres password=postgres
上記の部分は、テーブルを作成したDB名、ユーザ名、パスワードに変更してください。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>掲示板1</title>
</head>
<body>
<form method="post" action="pgbbs1.php">
本文:<input type="text" size="80" name="contents">
<input type="submit" value="送信">
</form>
<?php
$con = pg_connect("dbname=postgres user=postgres password=postgres");
$contents = $_POST['contents'];
if ($contents) {
  $contents = pg_escape_string(htmlspecialchars($contents));
  pg_query($con, "insert into pgbbs1 values('$contents')");
}
$rs = pg_query($con, "select contents from pgbbs1");
while ($row = pg_fetch_array($rs)) {
  print $row['contents'] . "<br>\n";
}
pg_close($con);
?>
</body>
</html>
入力が終わったら「pgbbs1.php」というファイル名で保存、サーバにアップロードし、実行してみてください。

ソースの解説

$con = pg_connect("dbname=postgres user=postgres password=postgres");
データベースに接続し、接続リソースを $con に返します。接続リソースはデータベースを操作するための関数を呼び出すときに必要となります。dbname がDB名、user がユーザ名、password がパスワードになります。
$contents = $_POST['contents'];
if ($contents) {
  $contents = pg_escape_string(htmlspecialchars($contents));
  pg_query($con, "insert into pgbbs1 values('$contents')");
}
フォームの本文を送られた場合、テーブル pgbbs1 にその内容を追加しています。pg_query 関数はPostgreSQLのデータベースに対してSQL文を実行します。ただし、そのままインサートするのではなく、不正な書き込みを防ぐためにまず htmlspecialchars 関数によってタグを無効化し、さらに pg_escape_string 関数でSQL問い合わせ用の特殊文字(シングルクォートなど)をクォートして正確にインサートできるようにしています。
$rs = pg_query($con, "select contents from pgbbs1");
テーブル pgbbs1 から全ての行を取り出すクエリを実行し、クエリ結果リソースを $rs に返します。$rs は以下の pg_fetch_array 関数で各行を取り出すときに使用します。
while ($row = pg_fetch_array($rs)) {
  print $row['contents'] . "<br>\n";
}
テーブル pgbbs1 の全ての行を取得して画面に出力しています。
pg_fetch_array はクエリ結果リソースから一行取り出し配列に格納する関数です。引数で行を指定しない場合は順番に一行ずつ取り出します。戻値($row)の配列は数値インデックスと列名をキーとして連想配列の両方にデータが格納されます。上記の場合は、$row[0] と $row['contents'] の両方に列 contents の内容が格納されることになります。
pg_close($con);
DBの接続リソースを解放します。
前ページ PHPとPostgreSQLの連携入門 TOP 次ページ
このエントリーをはてなブックマークに追加 そっか0

このページに関するコメントをどうぞ

お名前:


wentgt
すべての
calltrackingsource.com 13s.info nhadeptrongoi.com kashinvestment.com csgo-butterfly.com anklebitergaming.com
csfire.pro envelopesstore.com ginastarmusic.com mp3-teca.com csgoodstakes.com
went.black 2pay4win.com appliancerepairsnearme.com oferta-netflix.com
techitax.com csprey.com lightshadowspace.com csboom.pro
投稿者
2017/01/25 00:08

初心者
メールソフトの設定ってどうやるのですか...
gmailに送りたいのですが...
2017/01/24 21:33

enveloptf
すべての
calltrackingsource.com 13s.info nhadeptrongoi.com kashinvestment.com csgo-butterfly.com anklebitergaming.com
csfire.pro envelopesstore.com ginastarmusic.com mp3-teca.com csgoodstakes.com
went.black 2pay4win.com appliancerepairsnearme.com oferta-netflix.com
techitax.com csprey.com lightshadowspace.com csboom.pro
投稿者
2017/01/24 21:23

paywinlv
すべての
calltrackingsource.com 13s.info nhadeptrongoi.com kashinvestment.com csgo-butterfly.com anklebitergaming.com
csfire.pro envelopesstore.com ginastarmusic.com mp3-teca.com csgoodstakes.com
went.black 2pay4win.com appliancerepairsnearme.com oferta-netflix.com
techitax.com csprey.com lightshadowspace.com csboom.pro
投稿者
2017/01/24 18:04

anklebitcw
すべての
calltrackingsource.com 13s.info nhadeptrongoi.com kashinvestment.com csgo-butterfly.com anklebitergaming.com
csfire.pro envelopesstore.com ginastarmusic.com mp3-teca.com csgoodstakes.com
went.black 2pay4win.com appliancerepairsnearme.com oferta-netflix.com
techitax.com csprey.com lightshadowspace.com csboom.pro
投稿者
2017/01/24 11:35

butterfxa
すべての
calltrackingsource.com 13s.info nhadeptrongoi.com kashinvestment.com csgo-butterfly.com anklebitergaming.com
csfire.pro envelopesstore.com ginastarmusic.com mp3-teca.com csgoodstakes.com
went.black 2pay4win.com appliancerepairsnearme.com oferta-netflix.com
techitax.com csprey.com lightshadowspace.com csboom.pro
投稿者
2017/01/24 03:37

nhadeptronmr
すべての
calltrackingsource.com 13s.info nhadeptrongoi.com kashinvestment.com csgo-butterfly.com anklebitergaming.com
csfire.pro envelopesstore.com ginastarmusic.com mp3-teca.com csgoodstakes.com
went.black 2pay4win.com appliancerepairsnearme.com oferta-netflix.com
techitax.com csprey.com lightshadowspace.com csboom.pro
投稿者
2017/01/23 20:39

nhadeptronlv
すべての
calltrackingsource.com 13s.info nhadeptrongoi.com kashinvestment.com csgo-butterfly.com anklebitergaming.com
csfire.pro envelopesstore.com ginastarmusic.com mp3-teca.com csgoodstakes.com
went.black 2pay4win.com appliancerepairsnearme.com oferta-netflix.com
techitax.com csprey.com lightshadowspace.com csboom.pro
投稿者
2017/01/23 15:24

sinforve
すべての
calltrackingsource.com 13s.info nhadeptrongoi.com kashinvestment.com csgo-butterfly.com anklebitergaming.com
csfire.pro envelopesstore.com ginastarmusic.com mp3-teca.com csgoodstakes.com
went.black 2pay4win.com appliancerepairsnearme.com oferta-netflix.com
techitax.com csprey.com lightshadowspace.com csboom.pro
投稿者
2017/01/23 12:46

calltrackju
すべての
cbbnews24.com
csgobooms.com
csgojoybets.com
incareersjobs.com
stcmidtenn.org
thewill.in
sakirkaratas.com
apexturnkey.in
medray.in
applevalleymarket.com
b8b90.com
danhhotgay.com
cstopstake.com
nsm.org.in
vov-fc.com
csgohugepots.com
eaglesapparelshop.com
mymobileappmobiappssub2016.com
sbppl.org
gracedental.in
kehulin.com
cheappricetoyou2015.com
vamortgageloantexas.com
doitacdoanhnghiep.com
techimanage.com
elmi.co
upea.in
esncordoba.org
goal888cash.com
fullebookz.com
2winde222.com
投稿者
2017/01/23 09:37

残りを読む »