我有一系列包含转义字符的正则表达式,需要将其存储在 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。 - Johan