gpt4 book ai didi

php - 为什么 mysql_real_escape_string 在不应该的地方插入引号?

转载 作者:太空宇宙 更新时间:2023-11-03 12:10:15 25 4
gpt4 key购买 nike

我有一个 php 页面,用于将订单从 csv 文件导入到 mysql 数据库中。表中的一个 varchar 用于 txnid。我发现我偶尔会遇到导致“解析期间发现非法 double 值”错误的 txnid。例如:

6L831105EP011602

是一个很好的值,不会造成任何麻烦。

71V72876YH791094

同样,没问题。

546635980E5898057

但这一个会导致错误,大概是因为它被解析为 double 值。

我曾尝试使用 mysql_real_escape_string 来清理数据,但这会导致所有值都以 '' 为前缀,除非它们会被解析为 double 值。

清理这些数据的正确方法是什么?在尝试将值插入 MySQL 之前,如何确定它是否会导致解析错误?

最佳答案

mysql_real_escape_string() NOT 向字符串添加引号。它ESCAPES sql 元字符。

例如

$str1 = "Miles O'Brien";
$str2 = "546635980E5898057";
$str3 = 42;

echo mysql_real_escape_string($str1); // output: Miles O\'Brien
echo mysql_real_escape_string($str2); // output: 546635980E5898057
echo mysql_real_escape_string($str3); // output: 42

在任何情况下,任何转义字符串都不会像 'Miles O\'Brien' 那样突然出现,除非您自己添加这些引号。例如

echo "'" . mysql_real_escape_string($str1) . "'";

关于php - 为什么 mysql_real_escape_string 在不应该的地方插入引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24638985/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com