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 回答