2013-06-20 21 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