2012-04-24 22 views
0

を使用してMySQLデータベースに私は次のコードでXAMPPでMySQLデータベースにアクセスするためのPerlのCGIを使用しています: 接続PerlのCGIとXAMPP

#!/xampp/perl/bin/perl -w 

use DBI; 

print "Content-type:text/html\r\n\r\n"; 

$database = "mydb"; 
$host = "localhost"; 
$port = "3306"; 
$user = "root"; 
$pw = ""; 

$dsn = "dbi:mysql:$database:$host:$port"; 

print "Trying to connect <br />"; 
$connect = DBI->connect($dsn, $user, $pw, {RaiseError=>1}); 

if (defined $connect) { 
    print "Preparing query <br />"; 
} 

$query = "SELECT * FROM reference WHERE ID = 1742031"; 
$query_handle = $connect->prepare($query); 

$query_handle->execute(); 

$query_handle->bind_columns(undef, \$pmid, \$popu, \$loc); 

while($query_handle->fetch()) { 
    print "$pmid, $popu, $loc <br />"; 
} 

は、しかし、私は私のウェブページに結果をプリントアウトすることができません。私は "準備クエリ" 行が印刷されていないため、データベースに接続できないと思います。しかし、データベースに接続して、mysqlコマンドラインから このクエリを実行することができます。私はその問題が何であるか分かりません。

EDIT:欠落しているDBD:mysqlモジュールをインストールした後、「 ローカルホストのMySQLサーバーに接続できません(10061)」という新しいエラーが表示されます。私はここに示唆に従ってみました: MYSQL - Cant connect to MYSQL server on 'localhost' (10061) とすべてがうまくいくようです。私はmysqld.exeを実行しており、mysqlをサービスとして実行しています。 また、私はmysqlコマンドラインからphpMyAdmin、 のようにデータベースに接続できます。rootアカウントしかないので、特権の問題はありません。

お知らせください。私はどんな助けにも感謝します。

+3

RaiseErrorをオンにして、DBIに何が間違っているかを確認します。 – pilcrow

+0

文字通り$ pwを空白のままにしましたか、ここでそれを削除しましたか? – delicateLatticeworkFever

+0

「@INCにDBD/mysql.pmが見つかりません」と表示されています。このモジュールをインストールするにはどうすればいいですか?私は自分のプログラムでも使っていませんでした! – user828647

答えて

1

How do I install this module?

使用コマンドラインで "CPAN":

> cpan 
cpan shell -- CPAN exploration and modules installation (v1.960001) 
Enter 'h' for help. 

cpan[1]> install DBD::mysql 

それがインストールされていない場合、あなたはそれをダウンロードすることができます:

https://metacpan.org/pod/DBD::mysql

+0

@pilcrow、JoelFan助けてくれてありがとう!私はDBD:mysqlモジュールをインストールしました。しかし、新しいエラーが表示されています: "localhost(10061)でMySQLサーバーに接続できません"。これを引き起こす原因は何ですか?私が言ったように、私はmysqlコマンドラインを通してデータベースに接続することができます。ここで私を助けてください。 – user828647

+0

そのような理由が考えられるようです。ここから始めてください:http:// stackoverflow。com/questions/119008/cant-connect-to-mysql-server-on-localhost-10061 apacheは特権ユーザーとして実行されないことに注意してください。たとえば、認証に接続できない場合などです。 – delicateLatticeworkFever

+0

特権ユーザーとしてApacheを実行させるにはどうすればよいですか? – user828647

0

をMySQLデータベースに接続するにはDBIを使用して、

$dsn = "dbi:mysql:$database;host=$host;port=$port"; 

localhostとポート3306がデフォルト値なので、これらの部分はそのままにしておくことができます。

+0

申し訳ありませんが、同じエラーが表示されます... – user828647