- 締切済み
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"; } ※ちなみにこれは一部です・・・
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- atsunosuke
- ベストアンサー率40% (74/181)
いま拝見しています。 こちらでこのファイルを引数なしでそのままブラウザで呼び出してみると perlサンプルプログラム【データの検索】 ログイン情報を入力してプリーズ(´д`;)ノ と表示されますが、それは同じですか?
- atsunosuke
- ベストアンサー率40% (74/181)
やはり解決には全文を見せていただいく必要がありそうです。 差し支えあれば無視してください。
補足
#!/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; ちょっと長くなっちゃいましたが、こんな感じです・・・
- atsunosuke
- ベストアンサー率40% (74/181)
こんにちは。66行目あたり print "</table>\n"; } ←▲コレ } # ステートメントハンドルを開放 $sth->finish(); ▲印を付けたブラケットが余計なようです。 外して試みてみてください。
お礼
すばやいご返信ありがとうございます。 すみません、試してみましたが}←これではないようです。 あとステートメントハンドルはもっと下のほうで開放してます。。 前文載せていない私が悪いのですが・・・ ちなみに。 このCGIを実行するとInnternalerrorはでなくて、なんか表示がされないんですよね。データはあるはずなのに。ログインが空白の場合のエラーメッセージは表示されるので、データベースに接続できていないんじゃないかな~なんて思ってきました。 よろしければ、use CGI qw(:standard)と$i_id = param("id")の意味などを教えていただけませんでしょうか?
お礼
はい、同じです。