mysql:4834
From: "gosikaku" <"gosikaku" <gosikaku@xxxxxxxxxx>>
Date: Mon, 24 Dec 2001 15:08:46 +0900
Subject: [mysql 04834] SELECT が実行できない
宏です。
下記のようなスクリプトを組んだのですが、これを実行してみると何故か
「SELECT * FROM userdb・・・を実行できません。」
とエラー表示されてしまい上手くいきません。
《環境》
OS:WIN2K
データベース:MySQL 2.20
サーバ:Apache 1.3.12(Win32)
$in{'remoteuser'}; →この変数にはフォームから送られてくるIDが代入
される。
何処が悪くてエラー表示されるのか見当がつかないので、何方かお教え
下さい宜しくお願いします。
#!perl
###設定###
#モジュール&ライブラリの指定
require "jcode.pl";
use CGI_Lite;
use DBI;
#CGI_Liteをライブラリ関数をコールする為の宣言
$cgi= new CGI_Lite();
#フォームデータを受け取り連想配列(%in)に代入
%in=$cgi->parse_form_data();
###設定終了###
#MySQLの設定
my($dns) = "DBI:mysql:userdb:localhost";
my($username) = "root";
my($password) = "××××";
my($dbh,$sth);
my(@ary);
$remoteuser = $in{'remoteuser'};
#編集ここから
if($in{'mode'} eq
it'){
jcode::convert(\$in{'mail'}, 'euc');
if ($in{'mail'} =~ /[\xA1-\xFE][\xA1-\xFE]/ or $in{'mail'} =~ /\x8E/) {
print "Content-type: text/html\n\n";
print "メールアドレスは半角英数字で入力して下さい\n";
exit;
}
if($in{'mail'} && $in{'mail'} !~ /^[\w\+\-\.]+@[\w\+\-]+\.[\w\+\.\-]+$/){
&Error("メールアドレスが正しく入力されていません\n");
}
#ここではEUCコードでデータのやり取りをする。
$name = $in{'name'};
&jcode'convert(*name,"euc");
$mail = $in{'mail'};#メール半角英数のみなのでこのまま
$nenrei = $in{'nenrei'};
&jcode'convert(*nenrei,"euc");
$zyuusyo = $in{'zyuusyo'};
&jcode'convert(*zyuusyo,"euc");
$seibetu = $in{'seibetu'};
&jcode'convert(*seibetu,"euc");
$dbh = DBI -> connect ($dns, $username, $password)
or &Error("データベースへアクセスできません1");
# パスワードの変更があった場合と無かった場合の2つのUPDATE構文を作る。
if($in{'name'}){
$sth = $dbh->prepare( qq{ UPDATE userdb
SET name = "$name" WHERE username =
"$remoteuser"});
}
if($in{'mail'}){
$sth = $dbh->prepare( qq{ UPDATE userdb
SET mail = "$mail" WHERE username =
"$remoteuser"});
}
if($in{'nenrei'}){
$sth = $dbh->prepare( qq{ UPDATE userdb
SET nenrei = "$nenrei" WHERE username =
"$remoteuser"});
}
if($in{'zyuusyo'}){
$sth = $dbh->prepare( qq{ UPDATE userdb
SET zyuusyo = "$zyuusyo" WHERE username =
"$remoteuser"});
}
if($in{'seibetu'}){
$sth = $dbh->prepare( qq{ UPDATE userdb
SET seibetu = "$seibetu" WHERE username=
"$remoteuser"});
}
$sth -> execute()
or &Error("UPDATE userdbを実行できません。");
$sth -> finish();
$dbh -> disconnect();
&Reload;
}
$dbh = DBI -> connect ($dns, $username, $password)
or &Error("データベースへアクセスできません2");
$sth = $dbh->prepare( qq{ SELECT * FROM userdb
WHERE id = "$remoteuser"
});
$sth -> execute()
or &Error("SELECT * FROM userdb・・・を実行できません。");
@ary = $sth->fetchrow_array ();
#ここでは面倒かもしれないが、SJISに戻して表示する。
$name = $ary[2];
&jcode'convert(*name, "sjis");
$id = $ary[0]; #ユーザーネームはそのままでも問題ない。
$mail = $ary[3];
&jcode'convert(*mail, "sjis");
$nenrei = $ary[4];
&jcode'convert(*nenrei, "sjis");
$seibetu = $ary[6];
&jcode'convert(*seibetu, "sjis");
$zyuusyo = $ary[5];
&jcode'convert(*zyuusyo, "sjis");
$CurrentUsers .= qq(<tr>\n);
$CurrentUsers .= qq(<td width="80">$id</td>\n);
$CurrentUsers .= qq(<td width="80">$name</td>\n);
$CurrentUsers .= qq(<td width="80">$mail</td>\n);
$C
urrentUsers .= qq(<td width="80">$nenrei</td>\n);
$CurrentUsers .= qq(<td width="160">$seibetu</td>\n);
$CurrentUsers .= qq(<td width="80">$zyuusyo</td>\n);
$CurrentData .= qq(</tr>\n);
$sth -> finish();
$dbh -> disconnect();
print "Content-type: text/html\n\n";
print<<"__HTML__";
<HTML><HEAD><TITLE>ユーザーネーム [$remoteuser]</TITLE></HEAD>
<BODY TEXT="#44444" BGCOLOR="#FFFFFF">
<STYLE TYPE="text/css">
<!--
A:link {color:"pink"; text-decoration: "none" ;}
A:visited {color:"pink"; text-decoration: "none" ;}
A:hover {color:"blue"; text-decoration: "underline" ;}
TD { font-size: 11pt; }
-->
</STYLE>
<TABLE WIDTH="100%"><TR><TD>
<H2>■ユーザーネーム [$remoteuser] データ</H2>
<a href="./1kaiinpage.cgi#edit">個人情報編集</a>
<HR SIZE="0">
<P>
<B>●現在の[$remoteuser]登録情報は以下のとおりです。</B>
<table width="784" cellspacing="0" border="1" bordercolor="gray">
<tr>
<td width="80"><b>ID</b></td>
<td width="80"><b>名前</b></td>
<td width="80"><b>メールアドレス</b></td>
<td width="80"><b>年齢</b></td>
<td width="160"><b>性別</b></td>
<td width="80"><b>住所</b></td>
</tr>
$CurrentData
</table>
<P>
<HR SIZE="0"><A NAME="edit"></A>
<P>
<B>●個人情報/パスワード編集</B>
<table wdith="625" cellspacing="0" border="1" bordercolor="gray">
<form method="post" action="1kaiinpage.cgi">
<input type="hidden" name="mode" value="edit">
<font size="1">ニックネーム:</font><BR>
<INPUT type="TEXT" name="name" size="17">
<BR>
<font size="1">メールアドレス:【半角】</font><BR>
<INPUT type="TEXT" name="mail" istyle="3" size="17">
<br>
住所:<br>
<select name="zyuusyo">
<option selected>住所選択</option>
<option>愛知</option>
<option>岐阜</option>
<option>静岡</option>
<option>三重</option>
<option>富山</option>
<option>石川</option>
<option>福井</option>
</select>
<br>
<font size="1">年齢:</font><br>
<select name="nenrei">
<option selected>年齢選択</option>
<option>9以下</option>
<option>10~14</option>
<option>15~19</option>
<option>20~24</option>
<option>25~29</option>
<option>30~34</option>
<option>35~39</option>
<option>40~44</option>
<option>45~49</option>
<option>50~54</option>
<option>55~59</option>
<option>60以上</option>
</select>
<BR>
<font size="1">性別:</font><br>
<font size="1">男</font>
<input type="radio" name="seibetu" value="男">
<font size="1">女</font>
<input type="radio" name="seibetu" value="女">
<BR>
<INPUT type="SUBMIT" value="送信">
<INPUT type="RESET" value="取消">
</P>
</form>
</table>
</TD></TR></TABLE>
</BODY>
</HTML>
__HTML__
sub Error {
print "Content-type: text/html\n\n";
print $_[0];
print qq(<br><a href="javascript:history.back(1)">戻る</a>);
exit;
}
sub Reload {
print "Content-type: text/html\n\n";
print qq(<META HTTP-EQUIV="Refresh" CONTENT="0;URL=./1kaiinpage.cgi">);
exit;
}
-> 4834 2001-12-24 15:08 ["gosikaku" <gosikaku] SELECT が実行できない 4836 2001-12-25 00:35 ┗[とみたまさひろ <tomm] 4837 2001-12-25 00:44 ┣["TOYOSHIMA, Masayuki] 4838 2001-12-25 07:13 ┃┗[sin <panocon@xxxxxxx] 4839 2001-12-25 07:28 ┗[Tatsuhiko Miyagawa <] 4847 2001-12-27 13:14 ┗["gosikaku" <gosikaku] 4848 2001-12-27 13:20 ┣[Tatsuhiko Miyagawa <] 4849 2001-12-27 13:35 ┗["KAWAI,Takanori" <GC] 4850 2001-12-27 14:27 ┗["gosikaku" <gosikaku]