【DM版本】:DM8
【操作系统】:mac
【CPU】:x86
【问题描述】*:PHP8 拼接字符串变量作为SQL使用dm_escape_string
1.会转义双引号和换行符,但不会转\,导致:换行和字符串\n都会是\n,无法区分;
2.保存转义后的内容后,转义符还在,导致:存入值和输入值不一致,取出来就多了转义符。比如"变成了"
1,$str = 'a"b"
c\nd\e/f';
echo dm_escape_string($str);
2,转义后: a"b\"\nc\nd
3,存入数据库:a"b\"\nc\nd\
出现两个\n,双引号多了
也还不知道有什么其他符号转义存储了。。。
我用addslashes方法这种转义把单引号和反斜杠加反斜杆,目前是windows环境,你看linux环境下能满足要求么
$str = 'a"b"
c\nd\e/f';
$A=addslashes($str);
$stmt = dm_prepare($link, 'insert into SYSDBA.USER1(USER_NAME) values(?)');
$result = dm_execute($stmt, array($A)) or die("Query failed : " . dm_error()."\n"); ;