提问人:Charlo 提问时间:10/25/2023 最后编辑:Charlo 更新时间:10/25/2023 访问量:45
pg_escape后出现 UTF8 错误 - Postgresql 和 PHP
UTF8 error after pg_escape - Postgresql and PHP
问:
我有以下一段代码,用于读取 txt 文件并将其导入 postgresql 数据库。我pg_escape_string用于所有可能包含特殊字符的文本字段。然后我把它导入数据库。全部成功。稍后,当我对相同的数据运行选择查询时,我收到 UTF8 错误。我检查了十六进制的错误代码,这是一个在我的数据中没有的字符。当我手动删除文本文件中的所有“并运行导入并再次选择查询时,一切正常。
我已经检查了堆栈溢出是否存在类似的错误,但找不到专门适用于pg_escape_string的答案,然后出现此错误。
关于如何在不手动删除 ' 并且没有收到错误的情况下运行导入的任何建议?
$val9 = pg_escape_string(trim($meterArr[$row][9]));
$val10 = pg_escape_string(trim($meterArr[$row][10]));
INSERT INTO "Meters"("AgentCode", "BuildingNr", "MeterNr", "Premises", "SortCode", "PrevReading", "DatePrev", "ConsumptionPrev", "Variance", "MeterName", "CurrOccupant", "MeterType", "MeterNoR","currReading","lastReadingDate","percConsumption","dailyAvg")
VALUES ('$val0', '$val1', '$val2', '$val3', '$val4', '$val5', '$val6', '$val7', '$val8', '$val9', '$val10', '$val11', '$val12','$val13','$val14','$val15','$val16')
ON CONFLICT ("AgentCode","BuildingNr","MeterNr") DO UPDATE SET
"Premises" = '$val3',
"SortCode" = '$val4',
"PrevReading" = '$val5',
"DatePrev" = '$val6',
"ConsumptionPrev" = '$val7',
"Variance" = '$val8',
"MeterName" = '$val9',
"CurrOccupant" = '$val10',
"MeterType" = '$val11',
"MeterNoR" = '$val12',
"currReading" = '$val13',
"lastReadingDate" = '$val14',
"percConsumption"='$val15',
"dailyAvg"='$val16';
这只是代码的一个片段。
我尝试手动删除特殊字符,并尝试pg_escape_string。使用手动删除,一切正常,但使用字符串pg_escape则不然。
这是我用urlencode(pg_escape_string($data[5])))得到的输出,其中包含有问题的数据。 卑尔根%27%27s+家电+R
然后这是 txt 文件中的实际数据行。 “728”,“298”,“12”,“6998”,“00008”,“卑尔根电器R”,“62066.00”,“62066.00”,“.00”,“.00”,“.00”,“2019- 1-25”,“25- 1-2019”,“.00”,“.00”,“N”,“N”,“N”,“N”,“N”,“N”,“.00”,“.00”,“0”,“N”,“,”1“,”卑尔根电器R“,”卑尔根电器R“,”卑尔根电器R“,”??"," 0"
答: 暂无答案
评论
'
'
pg_escape_string
urlencode