Hi! Could we please enable some services and cookies to improve your experience and our website?
Online Sandbox for SQL and PHP: Write, Run, Test, and Share SQL Queries and PHP Code
<?php
/**
* 模拟 CI 框架的字符串转义方法
* @param string $str 待转义的字符串
* @param bool $add_quotes 是否添加单引号(默认添加)
* @return string 转义后的字符串
*/
function escape_string($str, $add_quotes = true) {
// 如果字符串为 null,返回 'NULL'(数据库中的空值)
if ($str === null) {
return 'NULL';
}
// 如果字符串是布尔值,转换为整数
if (is_bool($str)) {
return $str ? '1' : '0';
}
// 如果字符串已经是数字,直接返回
if (is_numeric($str)) {
return $add_quotes ? "'$str'" : $str;
}
// 转义特殊字符
$str = (string) $str;
// 处理反斜杠
if (strpos($str, '\\') !== false) {
$str = str_replace('\\', '\\\\', $str);
}
// 处理单引号
if (strpos($str, "'") !== false) {
$str = str_replace("'", "\\'", $str);
}
// 处理双引号(可选,根据数据库配置决定是否需要转义)
if (strpos($str, '"') !== false) {
$str = str_replace('"', '\\"', $str);
}
// 添加引号(如果需要)
return $add_quotes ? "'$str'" : $str;
}
// 使用示例
$username = "O'Connor";
echo escape_string($username); // 输出: 'O\'Connor'
echo escape_string($username, false); // 输出: O\'Connor