0

J は私の在庫データを csv ファイル内に持っています。挿入値に特殊文字があるため、エラー メッセージが表示されます。これらの値は特殊文字 $" でタグ付けされているため、処理したくありません。挿入に使用しないようにします。次のコードを使用します。

#!/usr/bin/perl

# PERL MODULES WE WILL BE USING
use DBI;
use DBD::mysql;

# HTTP HEADER
print "Content-type: text/html \n\n";

# CONFIG VARIABLES
$platform = "mysql";
$database = "store";
$host = "localhost";
$port = "3306";
$tablename = "inventory";
$user = "username";
$pw = "password";

# DATA SOURCE NAME
$dsn = "dbi:$platform:$database:$host:$port";

# PERL DBI CONNECT
$connect = DBI->connect($dsn, $user, $pw);

# PREPARE THE QUERY
$query = "INSERT INTO inventory (id, product, quantity) VALUES (DEFAULT, 'tomatoes$"', '4')";
$query_handle = $connect->prepare($query);

# EXECUTE THE QUERY
$query_handle->execute();

エラー メッセージをスキップして次の挿入に移動するにはどうすればよいですか。

4

2 に答える 2

1

SQL インジェクションを回避して挿入文を処理します。

my $query = qq!INSERT INTO inventory (id, product, quantity) VALUES (?,?,?)!;
my $query_handle = $connect->prepare($query);

$query_handle->execute('DEFAULT', 'tomatoes$', '4');
于 2013-04-10T20:46:21.290 に答える
1

現在、これは perl 構文エラーであるため、クエリで $ をエスケープする必要があります。

$sql = "INSERT .... 'tomatoes$"', '4')";
                              ^---- 

それは有効な変数ではないため、その引用符はSQL文字列を終了します。試す

$sql = "INSERT .... 'tomatoes\$"', '4')";
                             ^--

代わりは。

于 2013-04-10T20:43:16.077 に答える