【发布时间】:2011-11-09 09:37:44
【问题描述】:
我有一系列正则表达式,其中包含我需要存储在 mysql 表中的转义字符。
如果我不转义反斜杠,它就会被消除。
我曾尝试在 PHP 中使用 mysql_real_escape_string、addslashes、str_replace 转义反斜杠,并且每次数据库存储双反斜杠而不是单个反斜杠时。
我也尝试在 bash 中使用 sed 来转义反斜杠,但它也会打印 2。
例子:
$regex = "stackoverflow\.com\/questions\/ask";
$query_text = addslashes($regex);
$query = "INSERT INTO my_table (url) VALUES ('$query_text')";
me@server:$ echo "select * from my_table" | mysql -uuser -Ddatabase -p'password'
stackoverflow\\.com\\/questions\\ask
关于我做错了什么有什么想法吗?
【问题讨论】:
-
只使用
mysql_real_escape_string来逃避数据库中注入的 $vars,切勿将其合并或替换为其他任何东西或者更好的是,使用 PDO。
标签: php mysql bash escaping backslash