自分で作ったmysqlからデータを参照し様として
#!/usr/bin/perl
print "Content-type: text/html \n\n";
use DBI;
#######DBIパス編集##########
$DB='****'
$DBusr='****'
$DBpass='****'
$DBtable='****'
#########DBI操作############
$FIND = "SELECT a,b,c,d,e,f,g,h,i FROM $DBtable WHERE a=\'****\' limit 1";
$dbh = DBI->connect($DB,$DBusr,$DBpass);
$serch = $dbh->prepare($FIND);
$serch->execute;
$serch = $serch->fetch;
#######取り出したデータを配列に代入########
$r = 0;
while( @rows = $serch->fetchrow_array ) {
for( $f = 0; $f < $serch->{NUM_OF_FIELDS}; $f++ ) {
$data{$serch->{NAME_lc}->[$f]}{$r} = $rows[$f];
}
$r++;
}
while( ($key, $val) = each %data ) {
while( ($key2, $val2) = each %{$val} ) {
$hash{$key} = $val2;
}
}
$a = $hash{'a'};
$b = $hash{'b'};
$c = $hash{'c'};
$d = $hash{'d'};
$e = $hash{'e'};
$f = $hash{'f'};
$g = $hash{'g'};
$h = $hash{'h'};
##########テスト用に表示#############
print "<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html;CHARSET=Shift_JIS\">";
print "<HTML><HEAD>";
print "<TITLE></TITLE>";
print "</HEAD>";
print "<BODY BGCOLOR=$bgc TEXT=\"$txtc\" LINK=\"$lic\">";
print "テスト:$bgc,$txtc,$lic,$button,$sight_name,$sight_tit,$bun1,$sex";
print "</BODY></HTML>";
と書いてるのですが、実行するとデータが取り出せません。
調べてみると
while( @rows = $serch->fetchrow_array )
の部分でエラーが出ます。
Can't call method "fetchrow_array" on unblessed reference atと言われてしまうのですが、何か記述の仕方等何か間違ってる部分などあれば指摘お願い致します。
ちなみにデータベースへの接続等は出来ています。
No.1ベストアンサー
- 回答日時:
> $serch = $serch->fetch;
これは何をしようとしているのでしょう?
少なくともこれによって $serch はDBIオブジェクトでなくなるでしょうから、
>while( @rows = $serch->fetchrow_array ) {
ここでインスタンスメソッドの fetchrow_arrayは
呼び出せなくて当然のような気がしますが。
No.2
- 回答日時:
$serch->fetch;と$serch->fetchrow_arrayを同時に実行しているのが問題では?
提示されたスクリプトの場合、$serch = $serch->fetch;の1行を削除するのが一番簡単かと。
あと、###取り出したデータを配列に代入###の部分が、ずいぶん複雑になっていますが、素直に$search->fetchrow_hashrefを使った方が自然な気がします。
カラム数を数えるための変数$rが用意してありますが、limit1にしてあるので、常に$r=1なので必要ないのでは?
確かにそうですね。
Cを書いてた時のくせで繰り返し文で配列にいれると言うのがあたりまえになってしまってて…。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
perlをバージョンアップしたら...
-
Perlでファイルの末尾から指定...
-
英数文字列のうちの数値を4桁に...
-
#!/usr/bin/perlで書きだしたCG...
-
bashスクリプト
-
ファイルアイコンの左下に緑の□...
-
perlでリテラル値はメモリにど...
-
perlについて
-
Perlで特定文字列から特定文字...
-
CGIでimgタグでalignを使うとエ...
-
Perlの例文でif($a==1&&$b==5&&...
-
テキストファイルで提出とは?
-
Perl の外部モジュールの利用方法
-
アルファベットに付いて質問し...
-
Perlのエラーについてご教授く...
-
AI sisterとは、偽物の人ですか?
-
perlプログラミング 空白行削除
-
perlで2次元配列をサブルーチ...
-
Perlで時間の計算
-
perlのrequireの動き方について...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
perlでファイルの拡張子を除い...
-
python質問
-
DBIを使ってのデータの取り出し...
-
grep関数を用いた複数行からの抽出
-
データベースから取得したデー...
-
配列内定義サブルーチン呼び出し
-
C言語の関数ポインタのイメージ...
-
桁数指定と四捨五入
-
アルファベットn文字の組み合わ...
-
index関数で複数個抜き出す
-
Perl 戻り値の型の判定って出来...
-
二桁の数字からなる配列数10...
-
サブルーチンと繰り返し処理を...
-
ソート時同じ値がある場合、表...
-
ファイルの最後の行から表示さ...
-
半角文字の縦書き表示
-
配列やハッシュで中身が同じか...
-
乱数と順列と組み合わせ
-
ハッシュ内の各値部分に配列を...
-
正規表現に関する質問
おすすめ情報