0

私は以下のperl抽出物を持っています:

$query = "INSERT INTO test (`MACADDR`) 
    VALUES ($MACADDR)";
    print $query,"\n";
    $db->do($query);

mysql に挿入しようとすると、次のエラーが発生しました。MAC アドレスは 000E38F4E9CC です。

DBD::mysql::db do failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '0E38F4E9CC)' at line 2 at insertmac.pl line 156.

perl mysql dbi は MAC アドレスを挿入できますか? 私の他のレコードは、MAC アドレスを除いて正しく挿入できます。

何か案が?ありがとう。

4

1 に答える 1

2

文字列を値として渡すときは、引用する必要があります

  $query = "INSERT INTO test (`MACADDR`) 
VALUES ('$MACADDR')";

または、それを準備してパラメーターを使用することもできます

 $query = "INSERT INTO test (`MACADDR`) 
VALUES (?)";

  my $q = $db->prepare($query);
  $q->execute($MACADDR);

これは、速度を上げるために再利用でき、SQL インジェクション攻撃も回避できるため、より良いアイデアです。

于 2013-06-20T09:53:31.717 に答える