有一點要注意 - 不知道這是否適用於所有 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] = "NULL 字元 \\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: