【发布时间】:2013-12-05 11:44:36
【问题描述】:
我继承了一个旧系统,它包含在整个站点(前端和后端)的许多地方使用的这个功能。
function clean_text_for_db($str) {
$str = trim($str);
$str = stripslashes($str);
$str = mysql_real_escape_string($str);
return $str;
}
它工作得很好,一般来说,但是当数据库在一段时间内不可用时,我注意到我的 apache 错误日志中出现了一堆错误。错误如下:
mysql_real_escape_string() [function.mysql-real-escape-string]: 无法建立到服务器的链接
function.mysql-real-escape-string]: 无法连接到本地 MySQL 服务器通过套接字'/var/lib/mysql/mysql.sock'
我了解为什么会发生错误,但是我不确定如何处理它以防止在再次发生这种情况时我的日志受到如此多的打击。考虑到该函数的使用如此广泛,我认为在 mysql_real_escape_string 之前添加一个 mysql_ping 可能是个坏主意,因为这意味着每次调用该函数时都这样做,而且在 99.9999% 的情况下这是不必要的。
【问题讨论】:
-
不要使用
mysql_*,因为它已被弃用。请改用 PDO 或 MySQLi。 -
@TimothyChoi 是的,我知道
mysql_函数已被弃用。然而,正如我所说,我正在开发一个遗留系统并且升级到 PDO 或 MySQLi 不是我目前可以考虑的。 -
啊,好吧 - stripslashes() 的使用是一种暗示。
-
您是否也在为非查询相关的上下文调用此函数?
-
@TimothyChoi 很遗憾,是的。它不仅用于 MySQL 查询。我知道这是错误的,没有任何意义,但它存在于系统中的很多地方。
标签: php mysql escaping mysql-real-escape-string