• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:CGIからデータベースにデータを登録したいのですが。。)

CGIからデータベースにデータを登録したい!なぜbikoが空だと登録されないのか?

このQ&Aのポイント
  • ブラウザからデータをCGIで取得し、MySQLに登録する方法について質問します。空の場合は登録されませんが、なぜでしょうか?
  • テーブル定義はNULL値OKに設定しており、bikoのデータ型はTEXTでもVARCHARでも試してみましたが同じ結果でした。
  • テーブルに登録するコードの直前で$biko=''としても登録されません。どうしてでしょうか?ご不明点があればお答えします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kuroizell
  • ベストアンサー率55% (95/170)
回答No.1

プレースホルダを使う or 変数をクォートで囲む でどうでしょうか?

noname#223023
質問者

お礼

kuroizellさん ありがとうございました!!!! ここ数日、ずっとこれで悩んでいまして、ホントに泣きそうでした!!! シングルクォーテーションで囲んだらテーブルにデータが入りました!! これは何ででしょう?? 変数の名前をそのまま入れているようなイメージがありますが、、、 あと、データは入ったのですが、文字化けしたテキストデータが入っていました。。。 これはどのように対処すればよろしいでしょうか? 重ね重ね申しわけございませんが、教えてください!!

その他の回答 (1)

回答No.2

すでに回答がありますが、プレースホルダでやると以下のようになります。 データが入らないところは、undef を入れます。 (表示がくずれるので、スペース2文字を全角空白で書いています) use strict; use warnings; use DBI; # DB Name my $db_name = 'sqlite_test.db'; unlink $db_name; print '--- Connect DB', "\n"; my $dbh = DBI->connect( 'dbi:SQLite:dbname=' . $db_name,   q{}, q{}, { RaiseError => 1 } )   || die "$db_name : $!"; my $sql; my $table = 'user_info'; print '--- Create Table', "\n"; $sql = "CREATE TABLE $table (id integer primary key, name varchar NULL)"; $dbh->do($sql); my $sth; print '--- Insert Record', "\n"; $sth = $dbh->prepare( 'INSERT INTO ' . $table . '(id, name) VALUES (?, ?)' ); $sth->bind_param( 1, '1' ); $sth->bind_param( 2, 'AAA' ); $sth->execute; $sth->bind_param( 1, '2' ); $sth->bind_param( 2, undef );  # NULL $sth->execute; print '--- Select Record', "\n"; $sql = 'select * from ' . "$table" . ';'; print $sql, "\n"; $sth = $dbh->prepare($sql); print '--- fetchrow_hashref', "\n"; $sth->execute; while ( my $row_hashref = $sth->fetchrow_hashref() ) {   my $id  = $row_hashref->{id};   my $name = $row_hashref->{name};   $id  = 'NULL' if !defined $id;   $name = 'NULL' if !defined $name;   print "id:$id name:$name", "\n"; }

noname#223023
質問者

お礼

_--_1l1_1_さん ご親切にプログラムまで書いてくださってありがとうございました!! ですが、、私には難しすぎて理解ができないです。。。(泣 SQL文でDBと接続しているんだなー。。というのはわかるのですが、、 文字化けの対処をしているのはどの部分なのでしょうか。。。 良かったら教えてください!! お願いします!!

関連するQ&A