質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.87%

  • SQLite

    561questions

    SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

  • Perl

    434questions

    Perlは多目的に使用される実用性が高い動的プログラミング言語のひとつです。

Perlでデータベースが使えない

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 157

trm

score -14

前提・実現したいこと

Perlでデータベースを使用したい。

発生している問題・エラーメッセージ

エラーメッセージ


「接続がリセットされました」とウェブブラウザに表示される。

該当のソースコード

Perl(WINDOWS用)
ここにご自身が実行したソースコードを書いてください

index.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Eurasia</title>
<meta http-equiv="content-type" content="text/html; charset=Shift_JIS">
</head>

<body bgcolor="#000066" text="#000000" link="#0000ee" alink="#0000ee" vlink="#551a8b">
<font color="#ff0000"><big><big><big>     現在ウェブ店舗作成中<br>
ご利用までにはしばらく<br>
お待ちください。<br>
<br>
ユーラシア</big></big></big></font><font color="#ff0000"><big><big><big><br>
</big></big></big></font><font color="#ffffff">本がネットで販売できる!他CD・DVD・ソフトウェア・ビデオゲームも販売できます!<br><br>
</font><a href="4.cgi"><img src="btn056_09%20-%201.gif"
alt="4.cgi" width="180" height="30">
<br>
</a>
</font><a href="5.cgi"><img src="btn056_09 - 2.gif"
alt="5.cgi" width="180" height="30">
<br>
</a>
</body>
</html>

4.cgi

!C:/WWW/Perl64/bin/perl

print "Content-type: text/html\n\n";
print <<"HTML";
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>ユーザーアカウント登録</title>
</head>
<body bgcolor="#000066" text="#000000" link="#0000ee" alink="#0000ee"
vlink="#551a8b">
<form action="bbb.cgi" method="post">                         
<form>
<table border="0">
<tbody>
<tr>
<td align="right"><b> <font color="#ff0000">希望ユーザーID</font></b><br>
</td>
<td><input type="text" name="name" size="40" maxlength="30"></td>
</tr>
<tr>
<td align="right"><b> <font color="#ff0000">希望パスワード</font></b><br>
</td>
<td><input type="password" name="pass" size="40" maxlength="30"></td>
</tr>
<tr>
<td align="right"><b><font color="#ff0000">パスワード確認</font></b><br>
</td>
<td><input type="password" name="pass2" size="40" maxlength="30"></td>
</tr>
<tr>
<td align="right"><b> <font color="#ff0000">氏名</font></b><br>
</td>
<td><input type=""text"" name="simei" size="40" maxlength="30"></td>
</tr>
<tr>
<td align="right"><b><font color="#ff0000">メールアドレス</font></b><br>
</td>
<td><input type=""text"" name="mail" size="40"
maxlength="30"></td>
</tr>
<tr>
<td align="right"><b><font color="#ff0000">商品名</font></b><br>
</td>
<td><input type="text" name="syouhinmei" size="40" maxlength="30"></td>
</tr>
<tr>
<td align="right"><b><font color="#ff0000">商品カテゴリー</font></b><br>
</td>
<td><input type="text" name="category" size="40" maxlength="30"></td>
</tr>
<tr>
<td align="right"><p><b><font color="#ff0000">商品カテゴリー</font></b><br>
</td>
<input type="radio" name="q1" value="書籍"><font color="#ff0000">書籍</font>
<input type="radio" name="q1" value="cd"><font color="#ff0000">CD</font>
<input type="radio" name="q1" value="dvd"><font color="#ff0000">DVD</font>
<input type="radio" name="q1" value="software"><font color="#ff0000">ソフトウェア</font>
<input type="radio" name="q1" value="videogame"><font color="#ff0000">ビデオゲーム</font>
</p>
</tr>
<tr>
<td align="right"><b> <font color="#ff0000">商品値段</font></b><br>
</td>
<td><input type="text" name="nedan" size="40" maxlength="30"></td>
</tr>
<br>
</tr>
<tr>
<td><input type="submit" onclick="location.href'C:/WWW/bbb.cgi'" value="送信">
<input type="reset" value="リセット"></td>
</tr>
</font>                                                 
</tbody>                        
</table>
</form>
<br>
<br>

</body>
</html>
HTML
exit;

bbb.cgi

!C:/WWW/perl64/bin/perl.exe

use strict;
use DBI;

フォームからデータを受け取り変数へ入れる

read(STDIN, $formin, $ENV{'CONTENT_LENGTH'});
$buffer = $ENV{'CONTENT_LENGTH'};

 + 記号を半角スペースに戻す

$formin =~ tr/+/ /;

URLエンコードデータをデコード

$formin =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
@indata = split (/&/,$formin); #受け取ったデータを&で区切り、配列へ
foreach $tmp (@indata) #フォームの要素分(配列分)以下の処理を繰り返す
{
($name,$value) = split (/=/,$tmp); # =記号で区切り、名前 と 値 に分ける
$forminh{$name} = $value; #区切った名前を付けた連想配列に値を入れる
}

 接続

my $dbh = DBI->connect("dbi:SQLite:dbname=test.db");

$dbh->do("create table meibo (dbid,dboid,dbpassword,dbsimei,dbmmail);");

 データ追加

sql=1
$dbh->do("insert into meibo (dbid,dboid,dbpassword,dbsimei,dbmmail) values (gql,$forminh{'name'},$forminh{'pass'},$forminh{'simei'},$forminh{'mail'});");

 テーブルの読み出し命令

my $sth = $dbh->prepare("select * from meibo");
$sth->execute;

 各データを展開表示

while (my @row = $sth->fetchrow_array) {
print "@row\n";
}
$sth->finish;
undef $sth;

 切断

$dbh->disconnect;

print "Content-type: text/html\n\n";
print <<"HTML";
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>コンテンツの情報書き込み</title>
</head>
<body bgcolor="#000066" text="#000000" link="#0000ee" alink="#0000ee"
vlink="#551a8b">
<form action="CGI194b1.html">
<textarea name="kanso" rows="4" cols="40">商品情報をご記入ください。</textarea>
<br>
<input type="submit" value="送信"><input type="reset" value="リセット">
</form> 
<br>
<br>
</body>
</html>
HTML
exit;

────────────────────────

これらのプログラムでbbb.cgiでSQLiteというデータベースを使用したいのですが、参考とした著述通りにプログラムを書いてもエラーが出ます。どなたかお願いします。

試したこと

課題に対してアプローチしたことを記載してください
データーベースを扱うサンプルプログラムを作成しましたが、文字化けして、うまく表示されません。

補足情報(言語/FW/ツール等のバージョンなど)

WINDOWS用Perl使用
より詳細な情報
このテラテイルでの表示では#!C:/WWW/perl64/bin/perl の著述では先頭の#の文字が消えていますが実際に書いたコードでは#を書いています。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • KojiDoi

    2017/12/09 12:43

    プログラムやHTMLの内容を示すときは、その前後の行に```を入力するか、解答欄の</>ボタンを押してソースコードがソースコードとして見えるようにしてください。

    キャンセル

  • KojiDoi

    2017/12/09 12:44

    どんなエラーが出ているのかも書いてください。

    キャンセル

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.87%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • SQLite

    561questions

    SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

  • Perl

    434questions

    Perlは多目的に使用される実用性が高い動的プログラミング言語のひとつです。