2013-06-20 5 views
0

У меня есть ниже PERL экстракт:Perl MySQL макинтош адрес ошибки

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

я получил ошибку ниже при попытке вставить в MySQL и мой макинтош адрес 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 ('$MACADDR')"; 

В качестве альтернативы вы можете подготовить его и параметры использования

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

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

, которая является лучшей идеей, как вы можете использовать его для скорости, а также избежать атак SQL-инъекций

+0

Спасибо за хорошее объяснение. Очень ценится. Я не знал о котировках, поскольку я не прогамма. – kyusan93

Смежные вопросы