2013-06-20 22 views
0

我有以下的Perl提取物:Perl的MySQL的MAC地址错误

$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地址。

有什么想法? 谢谢。

+1

您是否了解参数化查询?如果不是,为什么有人让你编写SQL? (换句话说,您必须引用mac地址,最好使用占位符来代替直接插值) – amon

回答

2

正如你传递一个字符串值,你需要或者引用它

​​

你可以准备它,并使用参数

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

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

这是一个好主意,你可以重复使用它对于速度而言,它也可以避免SQL注入攻击

+0

感谢您的好解释。非常感谢。由于我不是一名程序员,因此我完全不知道这些报价。 – kyusan93