Mysql插入查询失败

标签 mysql linux perl

你好,我正在尝试使用 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/

相关文章:

c++ - 在具有定义目标的 linux 上编译

php - 命令行脚本中无法识别 MongoDB PHP 扩展

perl - Perl 5 中存在哪些伪运算符?

perl - XML::Twig keep_encoding 如何工作?

mysql - 用于选择每组中前 x 个日期的 SQL Redshift 查询

mysql - 循环检查从一张表到另一张表的where条件

linux - Mariadb - Blob 数据导入仅适用于转储的同一数据库

windows - 如何强制 Perl 脚本使用 ActiveState 的 wperl?

c# - 当 DB 消失时,MySqlConnection Connect() 方法抛出异常的速度非常慢 C#

MySQL 字符串到日期用不同的字符串进行转换?