PHP mysql_real_escape_string或替代PDO

时间:2012-04-27 09:49:48

标签: php mysql database pdo mysql-real-escape-string

我正在尝试将很多旧的PHP mysql prodecural函数(如mysql_querymysql_real_escape_string等)迁移到PDO中,并且尽力而为。我不想重写每个旧的DB函数。原因是它是一个旧的应用程序,我正在开发一个新的模块,并希望在那里使用PDO。

所以现在我将这些旧函数移植到PDO方法中 - 我将_port添加到我的旧函数中,因此我使用mysql_query_portmysql_fetch_array_portmysql_num_rows_port和{{ 1}}。

前三个效果非常好:

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连接时,我无法使用它。所以请帮我决定做什么(或者在我的代码中找到错误):

  1. 在脚本开头的mysql_real_escape_string初始化,以便我仍然可以使用mysql_pconnect()(我不会通过该连接进行任何查询)。
  2. 写一些替代方案。 manual表示此函数“将反斜杠添加到以下字符:\ x00,\ n,\ r,\,',”和\ x1a。“,所以我提出了这个:
  3. mysql_real_escape_string

    您怎么看?

1 个答案:

答案 0 :(得分:0)

mysql_real_escape_string需要连接,因为它的输出取决于连接字符集。

如果您能够手动同步字符集(或者如果您从未更改过字符集),您可以编写自己的实现。