• 締切済み

mysqlへの接続でつまづいてまーす

Perlのプログラムでログイン画面を作ろうと思っています。 ブラウザのログインフィールドからデータをとり、mysqlに接続してDBを検索し、照合するデータを見つけたら、合致するかどうか判断させて、エラーもしくはHPへ入ってしまえよ!という感じです。 で、似たようなサンプルソースを見つけていじっているのですが、これが出来ないんですよね~。接続だけなら出来るのに・・・ とりあえずこの中にエラーがないか教えてほしいです(>_<) if($i_id eq "" || $i_pw eq ""){ print "ログイン情報を入力してプリーズ(´д`;)ノ"; }else{ $dbh = DBI->connect($dbn,$user,$pw); $dbh->do("SET NAMES sjis"); $rows = $dbh->selectrow_array("SELECT count(*) from list where id = $i_id"); if($rows == 0){ print "該当するデータはないっすね~(゜*゜)"; }else{ $sth = $dbh->prepare("SELECT * FROM list where id = $i_id"); $sth->execute(); print <<"html"; 検索結果一覧<br><br> <table border="1"> <tr bgcolor="#dddddd"> <td>学籍番号</td> <td>パスワード</td> </tr> html while (@row = $sth->fetchrow_array()){ print <<"html"; <tr> <td>$row[0]</td> <td>$row[1]</td> </tr> html } print "</table>\n"; } ※ちなみにこれは一部です・・・

みんなの回答

回答No.3

いま拝見しています。 こちらでこのファイルを引数なしでそのままブラウザで呼び出してみると perlサンプルプログラム【データの検索】 ログイン情報を入力してプリーズ(´д`;)ノ と表示されますが、それは同じですか?

yuihhi
質問者

お礼

はい、同じです。

回答No.2

やはり解決には全文を見せていただいく必要がありそうです。 差し支えあれば無視してください。

yuihhi
質問者

補足

#!/usr/local/bin/perl use CGI qw(:standard); use DBI; $dsn = "DBI:mysql:sample1:localhost"; $user = "root"; $pw = "9230yui"; $i_id = param("school_id"); $i_pw = param("school_pw"); print <<"html"; Content-Type:text/html <html> <head> <meta http-equiv="Content-Type" content="text/html";charset=Shift_JIS"> <title>perlサンプルプログラム【データの検索】</title> </head> <body bgdolor="#ffffff" text="#000000"> perlサンプルプログラム【データの検索】<br><br> html if($i_id eq "" || $i_pw eq ""){ print "ログイン情報を入力してプリーズ(´д`;)ノ"; }else{ $dbh = DBI->connect($dbn,$user,$pw); $dbh->do("SET NAMES sjis"); $rows = $dbh->selectrow_array("SELECT count(*) from list where id = $i_id"); if($rows == 0){ print "該当するデータはないっすね~(゜*゜)"; }else{ $sth = $dbh->prepare("SELECT * FROM list where id = $i_id"); $sth->execute(); print <<"html"; 検索結果一覧<br><br> <table border="1"> <tr bgcolor="#dddddd"> <td>学籍番号</td> <td>パスワード</td> </tr> html while (@row = $sth->fetchrow_array()){ print <<"html"; <tr> <td>$row[0]</td> <td>$row[1]</td> </tr> html } print "</table>\n"; } $sth->finish(); $dbh->disconnect(); } print <<"html"; </body> </html> html exit; ちょっと長くなっちゃいましたが、こんな感じです・・・

回答No.1

こんにちは。66行目あたり print "</table>\n"; } ←▲コレ } # ステートメントハンドルを開放 $sth->finish(); ▲印を付けたブラケットが余計なようです。 外して試みてみてください。

yuihhi
質問者

お礼

すばやいご返信ありがとうございます。 すみません、試してみましたが}←これではないようです。 あとステートメントハンドルはもっと下のほうで開放してます。。 前文載せていない私が悪いのですが・・・ ちなみに。 このCGIを実行するとInnternalerrorはでなくて、なんか表示がされないんですよね。データはあるはずなのに。ログインが空白の場合のエラーメッセージは表示されるので、データベースに接続できていないんじゃないかな~なんて思ってきました。 よろしければ、use CGI qw(:standard)と$i_id = param("id")の意味などを教えていただけませんでしょうか?

関連するQ&A

専門家に質問してみよう