你好,我正在尝试使用 perl 将一些数据插入到 mysql 中。 我有一个数组,我想将其插入到表中。但问题是数组有一个“'” .当我尝试插入它时出现错误mysql查询失败。
#!/usr/bin/perl
use DBI;
@abc = "FUJI-XEROX CO. LTD. ADVANCED TECH & ENG'G CENTER 9-50 CHUO 2-CHOME, EBINA-SHI KANAGAWA 24 JAPAN";
$dbh = DBI->connect('dbi:mysql:remotegenius;host=localhost', 'root', 'active123') or die "Connection Error: $DBI::errstr\n";
$dbh->do("insert into OUI set `oui`='$abc'");
当我执行代码时,我得到
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 'G CENTER 9-50 CHUO 2-CHOME, EBINA-SHI KANAGAWA 24 JAPAN'' at line 1 at ./test.pl line 9.
我需要 mysql 和 perl 专业知识的帮助。
最佳答案
首先,必须在每个程序的顶部使用严格
和使用警告
。它通过揭示简单的错误节省了大量时间,并且会提醒您将字符串放入数组 @abc
中,然后在 SQL 语句中使用标量 $abc
。我假设您打算在整个过程中使用 $abc
。
您的错误是因为这不是 INSERT
语句的样子。您还需要正确转义并引用 $abc
中的字符串,因为它包含单引号,因此您必须编写
$dbh->do(sprintf 'INSERT INTO oui (oui) VALUES (%s)', $dbh->quote($abc))
但最好先准备语句,然后执行它
my $insert = $dbh->prepare('INSERT INTO oui (oui) VALUES (?)');
及以后
$insert->execute($abc);
<小时/>
或者您的意思是“UPDATE oui SET oui = ?”
?但这会将表中每一行的 oui
字段设置为相同的值。
关于Mysql插入查询失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25729515/