MySQL 转义反斜杠
我有一系列正则表达式,其中包括需要存储在 mysql 表中的转义字符。
如果我不转义反斜杠,它就会被消除。
我尝试使用 mysql_real_escape_string、addslashes、str_replace 在 PHP 中转义反斜杠,并且每次数据库存储双反斜杠而不是单个反斜杠。
我也尝试过在 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
关于我做错了什么有什么想法吗?
I have a series of regular expressions that include escape characters that I need to store in a mysql table.
If I don't escape the backslash, it is eliminated.
I have tried escaping the backslash in PHP using mysql_real_escape_string, addslashes, str_replace, and every time the database stores a double backslash rather than a single one.
I have also tried using sed in bash to escape the backslash, but it also prints 2.
Example:
$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
Any ideas as to what I am doing wrong?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
斜杠在 mysql 客户端的控制台输出中被转义;不在数据库中;)
尝试以交互方式运行客户端:
和非交互方式:
使用
--raw
禁用此转义:从手册中:
顺便说一句,mysql_real_escape_string 是正确使用的转义函数。
The slashes are escaped in the mysql client's console output; not in the database ;)
Try running the client interactively:
And non-interactively:
Use
--raw
to disable this escaping:From the manual:
BTW mysql_real_escape_string was the right escape function to use.