[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. 【速報】パナマ文書に記載されている日本企業、日本人の一覧リスト (7 PV)
  2. 5ちゃんねる(5ch.net、旧2ちゃんねる)掲示板 (7 PV)
  3. プリンセスガーデンホテル女性社長の「片岡都美」氏はフジモリ元大統領夫人 (6 PV)
  4. [Twitter]ツイッター検索のまとめ (6 PV)
  5. 2chまとめサイト(ブログ)検索 (5 PV)
  6. 佐野研二郎氏の妻「実際にデザインを担当しているのは数人の部下。佐野は監修しただけ」パクリ疑惑を完全否定 (5 PV)
  7. ホッシュジエンの国内ニュース解説 (4 PV)
  8. CIA情報提供者「ジェラルド・カーティス」が菅首相を訪問、みんなの党との連立を指示か (4 PV)
  9. 自称「紀州のドンファン」和歌山の資産家「野崎幸助」氏が覚せい剤で不審死、警察は殺人容疑で捜査 (4 PV)
  10. 2NN (2ch News Navigator) (4 PV)

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

  1. 掲示板やチャットなどのフリーPHPスクリプトの配布サイト (149 PV)
  2. 【速報】パナマ文書に記載されている日本企業、日本人の一覧リスト (65 PV)
  3. [Twitter]ツイッター検索のまとめ (63 PV)
  4. プリンセスガーデンホテル女性社長の「片岡都美」氏はフジモリ元大統領夫人 (47 PV)
  5. 5ちゃんねる(5ch.net、旧2ちゃんねる)掲示板 (46 PV)
  6. 2NN (2ch News Navigator) (41 PV)
  7. 2ちゃんねる(2ch)検索 掲示板 - スレタイ、過去ログ、全文検索 (37 PV)
  8. 伝説の男、瓜田純士さんが新宿駅構内で2週間前に割腹自殺を図る (35 PV)
  9. PHP、MySQLで動くオープンソース掲示板ソフト (26 PV)
  10. ログ速(ろぐそく、logsoku) - 過去ログ スレタイ検索 全文検索 (25 PV)

アクセス統計

ディレクトリ

関連サイト