这里需要注意的一点——不知道这是否适用于所有 DB2 安装,我知道我使用的是一个过时的版本,但是我的 DB2 安装需要用 ' 来引用而不是斜杠。
这意味着此函数无法拾取字符串中的撇号 ',因为它添加了 DB2 会忽略的斜杠。
您需要使用类似 str_replace 的方法将您的 ' 替换为 ''。
(PECL ibm_db2 >= 1.6.0)
db2_escape_string — 用于转义某些字符
string_literal
包含需要修改的特殊字符的字符串。在前面添加反斜杠的字符是 \x00
、\n
、\r
、\
、'
、"
和 \x1a
。
返回在上面提到的特殊字符前添加了反斜杠的 string_literal
。
示例 #1 一个 db2_escape_string() 示例
使用 db2_escape_string() 函数的结果
<?php
$conn = db2_connect($database, $user, $password);
if ($conn) {
$str[0] = "所有字符: \x00 , \n , \r , \ , ' , \" , \x1a .";
$str[1] = "反斜杠 (\)。单引号 (')。双引号 (\")";
$str[2] = "空字符 \0 也必须被引用";
$str[3] = "有趣的字符: \x1a , \x00 .";
$str[4] = "无需引用";
$str[5] = 200676;
$str[6] = "";
foreach( $str as $string ) {
echo "db2_escape_string: " . db2_escape_string($string). "\n";
}
}
?>
以上示例将输出
db2_escape_string: All characters: \0 , \n , \r , \\ , \' , \" , \Z . db2_escape_string: Backslash (\\). Single quote (\'). Double quote (\") db2_escape_string: The NULL character \0 must be quoted as well db2_escape_string: Intersting characters: \Z , \0 . db2_escape_string: Nothing to quote db2_escape_string: 200676 db2_escape_string: