我正在尝试以最小的努力mysql_query
将许多旧的 PHP mysql prodecural 函数等迁移mysql_real_escape_string
到 PDO 中。我不想重写每一个旧的数据库函数。原因是它是一个相当旧的应用程序,我正在开发一个新模块并希望在那里使用 PDO。
所以现在我将这些旧函数移植到 PDO 方法中 - 我附加到我的旧函数,_port
所以我使用mysql_query_port
,和.mysql_fetch_array_port
mysql_num_rows_port
mysql_real_escape_string_port
前三个效果很好:
function mysql_query_port($query) {
$db = Database::instance();
$statement = $db->prepare($query);
if (!$statement->execute())
return false;
return $statement;
}
function mysql_fetch_array_port(PDOStatement $statement) {
return $statement->fetch();
}
function mysql_num_rows_port(PDOStatement $statement) {
return $statement->rowCount();
}
问题在于mysql_real_escape_string
- 当我没有 mysql 连接时,我无法使用它。所以请帮我决定要做什么(或在我的代码中找到一个错误):
- 在脚本的开头初始化
mysql_pconnect()
,以便我仍然可以使用mysql_real_escape_string
(我不会通过该连接进行任何查询)。 - 写一些替代品。手册说这个函数“在以下字符前加上反斜杠:\x00、\n、\r、\、'、”和\x1a。”,所以我想出了这个:
.
function mysql_real_escape_string_port($string) {
return addcslashes ($string, "\x00\n\r\\'\"\x1a");
}
你怎么看?