[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. プリンセスガーデンホテル女性社長の「片岡都美」氏はフジモリ元大統領夫人 (4 PV)
  2. PHP、MySQLで動くオープンソース掲示板ソフト (4 PV)
  3. 2chみたいな掲示板「PHP 2chBBS」 (4 PV)
  4. デスクトップ2ch (2 PV)
  5. ログ速(ろぐそく、logsoku) - 過去ログ スレタイ検索 全文検索 (2 PV)
  6. 2ちゃんねる(2ch)検索 掲示板 - スレタイ、過去ログ、全文検索 (2 PV)
  7. 全米が大興奮、米人気女優ジェニファーローレンスさんやモデルのケイトアプトンさんヌード写真が流出 (1 PV)
  8. 岡沢高宏の相棒でヤクザの金村剛弘(金剛弘)が西新宿の路上で襲撃され死亡 (1 PV)
  9. 「真実を探すブログ」と「カレイドスコープ」が互いに誹謗・中傷と非難の応酬 (1 PV)
  10. 5ちゃんねる(5ch.net、旧2ちゃんねる)掲示板 (1 PV)

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

  1. PHP、MySQLで動くオープンソース掲示板ソフト (94 PV)
  2. 岡沢高宏の相棒でヤクザの金村剛弘(金剛弘)が西新宿の路上で襲撃され死亡 (75 PV)
  3. 2chまとめサイト(ブログ)検索 (57 PV)
  4. プリンセスガーデンホテル女性社長の「片岡都美」氏はフジモリ元大統領夫人 (56 PV)
  5. 2ちゃんねる(2ch)検索 掲示板 - スレタイ、過去ログ、全文検索 (56 PV)
  6. 警視庁がチャゲアスのASKA(宮崎重明)を覚せい剤取締法違反で逮捕、本人は容疑を否認 (49 PV)
  7. 5ちゃんねる(5ch.net、旧2ちゃんねる)掲示板 (44 PV)
  8. ログ速(ろぐそく、logsoku) - 過去ログ スレタイ検索 全文検索 (42 PV)
  9. 【速報】パナマ文書に記載されている日本企業、日本人の一覧リスト (36 PV)
  10. [B-CAS]平成の龍馬(多田光宏)逮捕 (34 PV)

アクセス統計

ディレクトリ

関連サイト