質問させてください。
PERL、DBI、MYSQL5でメールアドレスにマッチさせてデータを呼び出したいのですが動きません。
下記の(1)では動くのですが、(2)になるとダメになります。
■(1) #$noには'1'が入っています。
my $query = "select * from TABLE_NAME where no = $no ";
■(2) #$mailには'test@test.com'が入っています
my $query = "select * from TABLE_NAME where mail = $mail";
SQL文以外の部分は過去正常に動いているので問題無いと思います。
今回メールアドレスでwhereするというのが初めてですので、
なにかその部分でダメになっているのではと考えています。
ちなみに直接書いた場合(以下)は正常に動きます。
my $query = "select * from TABLE_NAME where mail = test\@test\.com";
なぜでしょう…
検索しても全く原因がわかりませんでした。
分かる方いらっしゃいましたらご回答いただければ幸いです。
よろしくお願いします。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
テーブル上でメール部分は文字列で定義していると思いますが、 SQL ではシングルクォー
テーションでくくったものが文字列となります。つまり、
select * from TABLE_NAME where mail = 'test@test.com';
という SQL を渡さなければなりません。
(以下、表示がくずれるの 1 バイトのスペースを全角のスペースにしていることに注意)
#!/usr/bin/perl
use strict;
use warnings;
use DBI;
my $db_name = 'sqlite_test.db';
unlink $db_name;
my $dbh = DBI->connect(
'dbi:SQLite:dbname=' . $db_name,
'', '',
{ AutoCommit => 0,
RaiseError => 1
}
) || die "$db_name : $!";
my $sql;
my $table = 'user_info';
print '--- Create Table', "\n";
$sql
= 'CREATE TABLE '
. $table
. '(id integer primary key, name string, mail string)';
$dbh->do($sql);
$dbh->commit;
my $sth;
print '--- Insert Record', "\n";
$sth = $dbh->prepare(
'INSERT INTO ' . $table . '(id, name, mail) VALUES (?, ?, ?)' );
$sth->bind_param( 1, '1' );
$sth->bind_param( 2, 'user' );
$sth->bind_param( 3, 'user@xxx' );
$sth->execute;
$dbh->commit;
print '--- Select Record', "\n";
my $mail = 'user@xxx';
my $quote_mail = $dbh->quote($mail);
$sql = "select * from $table where mail=$quote_mail;";
print $sql, "\n"; # select * from user_info where mail='user@xxx';
$sth = $dbh->prepare($sql);
$sth->execute;
while ( my $ref = $sth->fetch() ) {
for my $array_ref (@$ref) {
print "$array_ref\n";
}
}
$sth->finish();
$dbh->disconnect;
unlink $db_name;
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- Access(アクセス) MAXで0が出力される 1 2022/03/31 21:43
- MySQL 下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「名前(first name) 1 2023/06/24 13:03
- PHP PHPでMysqlにデータがあるかどうか判別したい 1 2023/03/02 11:48
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テキストファイルで提出とは?
-
Perlの質問:行と列を入れ替え...
-
perlについて
-
openした後、closeしないでプロ...
-
Perl 特定のフォルダ以外削除
-
perl LWPでURLにアクセスした時...
-
perlをバージョンアップしたら...
-
ファイルをディレクトリ分配の...
-
アルファベットに付いて質問し...
-
#!/usr/bin/perlで書きだしたCG...
-
Perlのエラーについてご教授く...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
-
bashスクリプト
-
ファイルアイコンの左下に緑の□...
-
perlプログラミング 空白行削除
-
perlでリテラル値はメモリにど...
-
perlで2次元配列をサブルーチ...
-
Perlで時間の計算
-
perlのrequireの動き方について...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
fetchrow_arrayとfetchrow_hash...
-
perlでdb(mysql)に接続
-
perlのdbi-connect処理のエラー
-
PerlソースでのSQLのエラーにつ...
-
PerlでMySQLのテーブル一覧取得
-
ActivePerl を使用して MySQL に
-
MySQLのトランザクションについて
-
テキストデータをpostgreSQLの...
-
CGIからデータベースにデータを...
-
データベースにアクセス出来ま...
-
perlでのDBI接続
-
CGI(perl)データベースを教えて...
-
DBIでメールアドレスにマッチさ...
-
データベースへのデータの受け渡し
-
Oracleのデータベースに接続で...
-
ファイルデータ内容を SQL条件...
-
例外処理のフローチャートの記...
-
Excel VBAでリンク切れをチェッ...
-
ユーザー定義関数に#NAME?が返...
-
VBAで別モジュールへの変数の受...
おすすめ情報