[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>
[2236] Posted by kagahiro at 2010/08/19 20:09:57
0 point | Link (5) | Trackback (0) | Comment (0)

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";
}
[2235] Posted by kagahiro at 2010/08/19 20:08:36
0 point | Link (1) | Trackback (0) | Comment (0)

SQLインジェクション(SQL Injection)とは、Webアプリケーション開発者の意図しない悪意のあるSQL文やその一部を入力して、不正にデータベースを操作することを目的とした攻撃のことで、多くの場合データベースを不正に書き換えてコンテンツを改ざんし、ウェブ閲覧者にマルウエアの侵入を試みるプログラム (スクリプト)を実行させようとする。

SQLインジェクションの対策としては、入力値には半角英数字のみを許可するよう制限する方法や、SQLで使える特殊文字をエスケープして対処するという方法が一般的。

SQL インジェクション攻撃とその対策
今夜分かるSQLインジェクション対策

[2234] Posted by kagahiro at 2010/08/19 16:39:49
0 point | Link (1) | Trackback (0) | Comment (0)

PerlからDBIモジュールを使ってMySQLのテーブルにINSERT文でシングルクオートの含んだレコードを追加するには、次のようにprepare メソッドでプレースホルダを使ったステートメントハンドルを取得して、execute メソ...
[2233] Posted by kagahiro at 2010/08/19 16:38:39
0 point | Link (2) | Trackback (0) | Comment (0)

  1  


アクセスランキング

今日のアクセスランキング(上位10件)

  1. 5ちゃんねる(5ch.net、旧2ちゃんねる)掲示板 (5 PV)
  2. ログ速(ろぐそく、logsoku) - 過去ログ スレタイ検索 全文検索 (3 PV)
  3. 2chみたいな掲示板「PHP 2chBBS」 (3 PV)
  4. 全米が大興奮、米人気女優ジェニファーローレンスさんやモデルのケイトアプトンさんヌード写真が流出 (2 PV)
  5. 「暴力と麻薬に汚染された芸能界」を告発する梨元勝の「遺言状」 (2 PV)
  6. PHP、MySQLで動くオープンソース掲示板ソフト (2 PV)
  7. 水一杯800円の高級レストランの味がわずか420円で、ロッテリアが「川越シェフのナポリタンバーガー」を期間限定で販売 (1 PV)
  8. プリンセスガーデンホテル女性社長の「片岡都美」氏はフジモリ元大統領夫人 (1 PV)
  9. 2NN (2ch News Navigator) (1 PV)
  10. 読売新聞「石井誠」記者変死事件 (1 PV)

今月のアクセスランキング(上位10件)

  1. ログ速(ろぐそく、logsoku) - 過去ログ スレタイ検索 全文検索 (16 PV)
  2. 5ちゃんねる(5ch.net、旧2ちゃんねる)掲示板 (16 PV)
  3. 2ちゃんねる(2ch)検索 掲示板 - スレタイ、過去ログ、全文検索 (10 PV)
  4. 2chみたいな掲示板「PHP 2chBBS」 (8 PV)
  5. 「暴力と麻薬に汚染された芸能界」を告発する梨元勝の「遺言状」 (7 PV)
  6. 2chまとめサイト(ブログ)検索 (7 PV)
  7. PHP、MySQLで動くオープンソース掲示板ソフト (6 PV)
  8. 佐野研二郎氏の妻「実際にデザインを担当しているのは数人の部下。佐野は監修しただけ」パクリ疑惑を完全否定 (5 PV)
  9. ピーアーク三田は許せない 東京都港区 (5 PV)
  10. プリンセスガーデンホテル女性社長の「片岡都美」氏はフジモリ元大統領夫人 (4 PV)

アクセス統計

ディレクトリ

関連サイト