[前][次][番号順一覧][スレッド一覧]

mysql:4866

From: "gosikaku" <"gosikaku" <gosikaku@xxxxxxxxxx>>
Date: Sun, 6 Jan 2002 18:01:29 +0900
Subject: [mysql 04866] SELECT が実行できない

宏です。

MySQLとPerlで掲示板を作成しているのですが、エラーメッセージが表示され上手く
いきません。
どなたか解決方法をお教え下さい。

《環境》
・OS:Win2K
・データベース:MySQL2.20
・言語:Perl5
・サーバ:Apache1.3.12

《データベース内容》
フィールド    フィールドタイプ   空の値(Null)    その他
bangou      int(11)          いいえ          auto_increment 
Primary
hizuke         datetime             いいえ
komento    text                   いいえ
hitokoto       tinytext              いいえ

《作成中のプログラム》
#!perl

###設定###
#モジュール&ライブラリの指定
use DBI;
require "cgi-lib.pl";
require "jcode.pl";

#KB数で最高データ値を記入
$MaxData = 600;

#利用するMySQLデータベースの名前を記入
$MySQLDataBase = "keiziban";

#MySQLユーザー名を記入
$MySQLUserName = "root";

#MySQLパスワードを記入
$MySQLPassword = "aaaaa";

#サーバーに時差がある場合は時差をプラスする
$TimeDiff = 0;

###設定終了###

  $cgi_lib::maxdata = int($MaxData * 1024);

  $ret = &ReadParse(\%cgi_data,\%cgi_cfn,\%cgi_ct,\%cgi_sfn);

  $cgi_lib::maxdata    = $cgi_lib::maxdata;


#新規投稿ここから
if($cgi_data{'mode'} eq 'new'){
&Error("コメントが入力されていません。") unless $cgi_data{'komento'};

$dbh = DBI -> connect ("DBI:mysql:$MySQLDataBase:localhost", $MySQLUserName,
$MySQLPassword) or &Error("データベースへアクセスできません。");

    $komento = $cgi_data{'komento'};
    &jcode'convert(*komento,"sjis");
    $hitokoto = $cgi_data{'hitokoto'};
    &jcode'convert(*syumi,"sjis");

#日本語コードに問題が出ないようにする
    $komento = quotemeta($komento);
    $hitokoto = quotemeta($hitokoto);



    $sth = $dbh->prepare( qq{ INSERT INTO bbs1
                              VALUES(NULL, DATE_ADD(NOW(), INTERVAL
$TimeDiff HOUR),"$komento", "$hitokoto")});

    $sth -> execute()
        or &Error("MySQL INSERT コマンドを実行できません。$DBI::err
($DBI::errstr)");

    $sth -> finish();

    unlink($cgi_sfn{'file'});

    print "Location: ./upbbs.cgi\n\n";
    exit;

  }#新規投稿ここまで

  #投稿削除ここから
  if($cgi_data{'mode'} eq 'del'){

    &Error("パスワードが一致しません。") if($cgi_data{'password'} ne
$MySQLPassword);

    $num = $cgi_data{'delnum'};

     if($num == 0){
     print "Location: ./upbbs.cgi\n\n";
     exit;
     }

    $dbh = DBI -> connect ("DBI:mysql:$MySQLDataBase:localhost",
$MySQLUserName, $MySQLPassword)
      or &Error2("データベースへアクセスできません。");

    $sth = $dbh->prepare( qq{ DELETE FROM bbs1
                              WHERE bangou = $bangou
                            });

    $sth -> execute()
        or &Error2("MySQLコマンド DELETE を実行できません。");

    $sth -> finish();
    $dbh -> disconnect();

    print "Location: ./upbbs.cgi\n\n";

    exit;

  }#投稿削除ここまで

#投稿記事表示
  if($cgi_data{'startview'} && $cgi_data{'endview'}){
   $StartView = $cgi_data{'startview'};
   $EndView = $cgi_data{'endview'};
  }else{
   $StartView = "0";
   $EndView = "10";
  }

  $dbh = DBI -> connect ("DBI:mysql:$MySQLDataBase:localhost",
$MySQLUserName, $MySQLPassword)
      or &Error("データベースへアクセスできません。");

  $sth = $dbh->prepare( qq{ SELECT bangou FROM bbs1 ORDER BY bangou DESC
LIMIT 1 });

  $sth -> execute()
      or &Error("MySQLコマンド SELECT を実行できません。1");

  $MaxNumber = $sth -> fetchrow_array();

  $sth2 = $dbh->prepare( qq{ SELECT bangou, hizuke, komento, hitokoto,
                            FROM bbs1 ORDER BY bangou DESC
                            LIMIT $StartView,10 });

  $sth2 -> execute()
      or &Error("MySQLコマンド SELECT を実行できません。2");

  while (@ary = $sth2 -> fetchrow_array()){
  $CurrentData .= <<__CURRENTDATA_EOF__;

 <P><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="600">
 <TR><TD BGCOLOR="#000000">

  <TABLE WIDTH=100% BORDER=0 CELLSPACING=1 CELLPADDING=4>
   <TR>
    <TD BGCOLOR="#000000" COLSPAN="2"><FONT COLOR="#FFFFFF"><B>掲示板
</B></FONT></TD>
   </TR>
   <TR>
    <TD BGCOLOR="#FFCC00" WIDTH="200" ALIGN= "RIGHT">日付</TD>
    <TD BGCOLOR="#FFFFFF"> $ary[1]</TD>
   </TR>
   <TR>
    <TD BGCOLOR="#FFCC00" WIDTH="200" ALIGN= "RIGHT">コメント</TD>
    <TD BGCOLOR="#FFFFFF"> $ary[2]</TD>
   </TR>
   <TR>
    <TD BGCOLOR="#FFCC00" WIDTH="200" ALIGN= "RIGHT">一言</TD>
    <TD BGCOLOR="#FFFFFF"> $ary[3]</TD>
   </TR>
  </TABLE>

 </TD></TR>
</TABLE>

__CURRENTDATA_EOF__
  }

  $sth -> finish();
  $sth2 -> finish();
  $dbh -> disconnect();


  $NextStartView = $StartView + 10;
  $NextEndView = $EndView + 10;
  $PreviousStartView = $StartView - 10;
  $PreviousEndView = $EndView - 10;
  if($MaxNumber <= 10){
  $NextView = "";
  $PreviousView = "";
  }

  if($MaxNumber > 10){
    if($EndView < $MaxNumber){
    $NextView = qq(<a
href="./upbbs.cgi?startview=$NextStartView&endview=$NextEndView">古い10件を
表\示>></a>);
    }
    if($StartView != 0){
    $PreviousView = qq(<a
href="./upbbs.cgi?startview=$PreviousStartView&endview=$PreviousEndView">
<<新しい10件を表\示>></a>);
    }
  }

print "Content-type: text/html\; charset=shift_jis\n\n";
print<<"__HTML__";
<HTML><HEAD><TITLE>[掲示板]</TITLE><HEAD>
<BODY BGCOLOR="gray" TEXT="#000000" LINK="#000000" VLINK="#000000">
<CENTER>
<IMG SRC="bbs.gif" WIDTH="468" HIEGHT="60"><P>
<HR WIDTH="600" SIZE="0" COLOR="#000000">
<A HREF="http://www.aaa.com/">トップページへ戻る</A>
<HR WIDTH="600" SIZE="0" COLOR="#000000">
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=4 WIDTH="600">
 <form method="post" enctype="multipart/form-data" action="upbbs.cgi">
 <input type="hidden" name="mode" value="new">
 <TR>
  <TD WIDTH="180" ALIGN= "RIGHT" VALIGN="TOP">◆<B>コメント:</B></TD>
  <TD><TEXTAREA COLS="50" ROWS="2" NAME=""></TEXTAREA></TD>
 </TR>
 <TR>
  <TD WIDTH="180" ALIGN= "RIGHT">◆<B>趣味:</B></TD>
  <TD><INPUT TYPE="TEXT" NAME="syumi " SIZE="10"></TD>
 </TR>
 </form>
</TABLE>

$CurrentData

<P><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=4 WIDTH="600">
<TR><TD ALIGN="LEFT">$PreviousView</TD><TD ALIGN="RIGHT">$NextView</TD></TR>
</TABLE>
<HR WIDTH="600" SIZE="0" COLOR="#000000">
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=4 WIDTH="600">
<FORM METHOD="POST" ACTION="upbbs.cgi">
<INPUT TYPE="HIDDEN" NAME="mode" VALUE="del">
<TR><TD ALIGN="RIGHT">●投稿番号:<INPUT TYPE="TEXT" NAME="delnum" SIZE="3">
&nbsp;●パスワード:<INPUT TYPE="PASSWORD" NAME="password" SIZE="10">
&nbsp;<INPUT TYPE="SUBMIT" VALUE="記事削除 (管理者用)"></TD>
</FORM></TR></TABLE>
</CENTER>
</BODY></HTML>
__HTML__

exit;

sub Error {
 print "Content-type: text/html\; charset=shift_jis\n\n";
 print<<__ERROR__;
 <HTML><HEAD><TITLE>ERROR!!</TITLE></HEAD>
 <BODY BGCOLOR="gray">
 <CENTER>
 <FONT COLOR="RED">
 <P><BR>
 <HR SIZE="0" COLOR="#000000">
 <P>
 <B>$_[0]<BR><BR>
 ブラウザの戻るボタンで戻ってやり直ししてください。
 <P>
 <HR SIZE="0" COLOR="#000000">
 </FONT>
 </BODY></HTML>
__ERROR__
 unlink($cgi_sfn{'file'});
 exit;
}

上記のプログラムの、

  $sth2 = $dbh->prepare( qq{ SELECT bangou, hizuke, komento, hitokoto,
                            FROM bbs1 ORDER BY bangou DESC
                            LIMIT $StartView,10 });

  $sth2 -> execute()
      or &Error("MySQLコマンド SELECT を実行できません。2");

の部分のSELECTが上手く実行できないようでブラウザには、
「MySQLコマンド SELECT を実行できません。2」
と表示されてしまいます。
どうか、何方か宜しければお教え下さい。
宜しくお願いします。



[前][次][番号順一覧][スレッド一覧]

->    4866 2002-01-06 18:01 ["gosikaku" <gosikaku] SELECT が実行できない                   
      4867 2002-01-06 18:28 ┣[とみたまさひろ <tomm]                                       
      4868 2002-01-06 20:38 ┗[楠吉彦 <moredebu@xxx]                                       
      4869 2002-01-07 00:56  ┗["gosikaku" <gosikaku] Re: SELECT が実行できない【解決】