加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 从文本文件导入数据时导致错误的SQL保留关键字

发布时间:2020-12-13 16:57:21 所属栏目:PHP教程 来源:网络整理
导读:我有以下代码.我正在尝试使用php导入一个文本文件到sql表,正如本网站上的一个用户所建议的那样. 不幸的是,由于我的文本文件在文件中包含“Max和Min”字样,我的导入错误中途. 我试图找出我能做些什么来避免它.我发现的大部分内容都是关于在列名中使用保留字.
我有以下代码.我正在尝试使用php导入一个文本文件到sql表,正如本网站上的一个用户所建议的那样.

不幸的是,由于我的文本文件在文件中包含“Max和Min”字样,我的导入错误中途.

我试图找出我能做些什么来避免它.我发现的大部分内容都是关于在列名中使用保留字.但我的不是列名作为数据插入列中的列名.

这可以避免,因为我不知道文本文件中有多少其他保留字,我需要每天自动运行我的代码.我不能每次都流产.这是一个巨大的文本文件,所以我不能每次都手动替换关键字.

mysqli_query("CREATE TABLE IF NOT EXISTS `add_feature_id` (
`id_f` INT(10) unsigned NOT NULL AUTO_INCREMENT,`id_product` INT(10) unsigned NOT NULL,`id_feature` INT(10) unsigned NOT NULL,`value` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL
DEFAULT   NULL,PRIMARY KEY ( `id_f` ) )",$conn);

$fd = fopen('trial.txt','r');
$fheader = fgets($fd); 

while (($data = fgetcsv($fd,"~")) !== FALSE) {
$id_product = $data[0];
$id_feature = $data[1];
$unitval = $data[2];
$value = mysql_real_escape_string($unitval);

mysqli_query("INSERT INTO   `add_feature_id`(`id_product`,`id_feature`,`value`) 
VALUES ($id_product,$id_feature,'$value')",$conn) or die(mysql_error());
}

fclose($fd);

$result = mysqli_query("SELECT * FROM `add_feature_id`",$conn);
//I print my result here but i get error while insert is executed

我得到的错误是

您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以便在’附近使用正确的语法
最高和最低要求

入门级要求低
Minimu’在第2行

这是我的文本文件的一部分,其中出现错误最大和最小要求,如下面的文本文件中所示

IMSKU~AttributeID~Value~Unit~StoredValue~StoredUnit(header row)

1006854 ~ 16257 ~Licensing Program: Max and Min Requirements<ul><li>Low entry level  requirement</li><li>Minimum 1 server (Band S) OR 5 desktop (Band A)</li></ul> ~  ~ 0.00 ~

解决方法

您在第32325行收到了无效数据:

1062708~16257~Express Licensing Program:<ul><li>Targeted at small - medium companies (1-500 units)</li><li>Minimum purchase requirements for licenses</li><li>Includes all Symantec software products</li><li> Certificated-based program - requires no legal review</li><li>Band identified via number of units per transaction</li></ul>
<br />Max and Min Requirements<ul><li>Low entry level requirement</li><li>Minimum 1 server (S-Band) OR 5 desktop (A-H Band)</li></ul>~~0.00~
1062708~16260~2~~0.00~

那条中间线.

它失败的原因是$id_product和$id_feature不是单引号/转义.

你应该做的是准备/执行这个(或摆脱那些无效的数据).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读