[date:20100819]の検索結果
PHPのプログラムからMySQLに接続し、SELECTでデータを取得する処理のサンプルプログラムです。
あらかじめphpMyAdminを使用してMySQLにテータベース「testdb」を作成し、以下のSQLを実行しテーブル「users」を作成、3件のレコードを登録しておきます。
CREATE TABLE `users` ( `userid` varchar(100) COLLATE utf8_bin NOT NULL, `password` varchar(250) COLLATE utf8_bin NOT NULL, `status` int(11) NOT NULL, `auth` int(11) NOT NULL, `username` varchar(250) COLLATE utf8_bin NOT NULL, `address` varchar(250) COLLATE utf8_bin NOT NULL, `mailaddr` varchar(100) COLLATE utf8_bin NOT NULL, `hpurl` varchar(250) COLLATE utf8_bin NOT NULL, `widgets` text COLLATE utf8_bin NOT NULL, `createdate` datetime NOT NULL, `lastupdate` datetime NOT NULL, PRIMARY KEY (`userid`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin; insert into `users` (`userid`,`password`,`status`,`auth`, `username`,`address`,`mailaddr`,`hpurl`,`widgets`, `createdate`,`lastupdate`) values('admin','1234','1','0','webmaster','', webmaster100@59log.com','http://59log.com/','',now(),now()); insert into `users` (`userid`,`password`,`status`,`auth`, `username`,`address`,`mailaddr`,`hpurl`,`widgets`, `createdate`,`lastupdate`) values('test1','5678','1','1','user 1','', 'test1@59log.com','http://59log.com/','',now(),now()); insert into `users` (`userid`,`password`,`status`,`auth`, `username`,`address`,`mailaddr`,`hpurl`,`widgets`, `createdate`,`lastupdate`) values('test2','abcd','1','1','user 2','', 'test2@59log.com','http://59log.com/','',now(),now());
以下のPHPプログラム(文字コードはUTF-8)では、テーブル「users」からレコードを全て取得しHTMLページとして出力しています。
--- mysql_connect.php ---<html> <head> <title>PHPでMySQLに接続するサンプルプログラム</title> </head> <body> <?php $domain = "localhost"; $user = "test"; $password = "abcd12"; $dbname = "testdb"; // MySQLに接続 $dbconnect = mysql_connect($domain, $user, $password) or die(mysql_error()); mysql_select_db($dbname, $dbconnect) or die(mysql_error()); $sql = "SELECT * FROM users"; // クエリの実行 $result = mysql_query($sql, $dbconnect); if (!$result) { $message = 'Invalid query: ' . mysql_error() . "\n"; $message .= 'Whole query: ' . $query; die($message); } // 結果セットの行数を取得 $rows = mysql_num_rows($result); echo $rows . '件のレコード<br />'; echo '<br />'; // 結果セットを表示 while ($row = mysql_fetch_assoc($result)) { echo $row['userid'] . '<br />'; echo $row['username'] . '<br />'; echo $row['mailaddr'] . '<br />'; echo $row['hpurl'] . '<br />'; echo '<br />'; } mysql_free_result($result); mysql_close($dbconnect); ?> </body> </html>
C言語やC++なら2次元配列といっても配列の階層を増やすだけなので、わりと簡単に理解できるのですが、 Perlはそこでリファレンスという、いまいちわかりにくいものが出てくるのでちょっと面倒です。
とはいっても、2次元配列程度ならそんなに複雑なコードになるというわけでもありません。
以下は、numdata.txtというコンマで区切られたテキストファイルのデータを、2次元配列に格納してからレコードごとに標準出力に出力するPerlのサンプルプログラムです。
--- numdata.txt --- 1,2,3,4 11,12,13,14 21,22,23,24 31,32,33,34 41,42,43,44 --- sample.pl --- #!/usr/bin/perl use strict; use warnings; #use Data::Dumper; my @list; open my $infh, '<', "numdata.txt"; while (my $rec = <$infh>) { chomp $rec; if ($rec ne '') { push @list, [split(/,/, $rec)]; } } close $infh; #print Dumper(@list); foreach my $item (@list) { # print Dumper($item); my ($a, $b, $c, $d) = @{$item}; print "$a, $b, $c, $d\n"; }
SQLインジェクション(SQL Injection)とは、Webアプリケーション開発者の意図しない悪意のあるSQL文やその一部を入力して、不正にデータベースを操作することを目的とした攻撃のことで、多くの場合データベースを不正に書き換えてコンテンツを改ざんし、ウェブ閲覧者にマルウエアの侵入を試みるプログラム (スクリプト)を実行させようとする。
SQLインジェクションの対策としては、入力値には半角英数字のみを許可するよう制限する方法や、SQLで使える特殊文字をエスケープして対処するという方法が一般的。
PerlからDBIモジュールを使ってMySQLのテーブルにINSERT文でシングルクオートの含んだレコードを追加するには、次のようにprepare メソッドでプレースホルダを使ったステートメントハンドルを取得して、execute メソ...
1
アクセスランキング
今日のアクセスランキング(上位10件)
- 2NN (2ch News Navigator) (9 PV)
- [Twitter]ツイッター検索のまとめ (1 PV)
- プリンセスガーデンホテル女性社長の「片岡都美」氏はフジモリ元大統領夫人 (1 PV)
- 2ちゃんねる(2ch)検索 掲示板 - スレタイ、過去ログ、全文検索 (1 PV)
- 読売新聞「石井誠」記者変死事件 (1 PV)
今月のアクセスランキング(上位10件)
- 2NN (2ch News Navigator) (329 PV)
- プリンセスガーデンホテル女性社長の「片岡都美」氏はフジモリ元大統領夫人 (97 PV)
- 小林興起元衆議院議員がタレントの杉本彩さんにキスを迫る (61 PV)
- 2ちゃんねる(2ch)検索 掲示板 - スレタイ、過去ログ、全文検索 (43 PV)
- 読売新聞「石井誠」記者変死事件 (21 PV)
- ログ速(ろぐそく、logsoku) - 過去ログ スレタイ検索 全文検索 (20 PV)
- 5ちゃんねる(5ch.net、旧2ちゃんねる)掲示板 (17 PV)
- 掲示板やチャットなどのフリーPHPスクリプトの配布サイト (12 PV)
- PHP、MySQLで動くオープンソース掲示板ソフト (12 PV)
- 掲示板フリーソフト - 無料で利用できる掲示板CGI (11 PV)
アクセス統計
ディレクトリ
- 59bbs.org - 掲示板
- Amalink - 画像付きamazon商品リンク作成ツール
- Mailform Std - オープンソースライセンス(GPLv2)のメールフォームCGI(Perl)
- ThreadPlus - オープンソースライセンスの(GPLv2)掲示板CGI(Perl)
- 2ちゃんねる掲示板検索
関連サイト
- 語句ログ - オープンソースブログソフト59Trackerを利用した情報共有ブログ
- 株価と為替レート(FX)の掲示板
- CommentPP - オープンソース掲示板システム(PHP/MySQL)のダウンロード
- BBS10 - CommentPP を利用したインターネット掲示板