php - 在 MySQL 中选择一些特殊字符时的奇怪行为

标签 php mysql

我有一行,其中 url 列具有以下值:

http://example.com/a~~1234567890-=!@#$%^&*()_+[\"test\"]

当我执行以下查询时:

SELECT * FROM `mytable` WHERE `url` = 'http://example.com/a~~1234567890-=!@#$%^&*()_+[\"test\"]'

MySQL 说记录不存在。

最佳答案

您需要转义两个\"中的\,因为\"是一个转义序列:只有引号 "会保留在执行的查询中。

\" [is an escape sequence turned into a] double quote (“"”) character
\\ [is an escape sequence turned into a] backslash (“\”) character

http://dev.mysql.com/doc/refman/5.7/en/string-literals.html

所以

SELECT * FROM `mytable` WHERE `url` = 'http://example.com/a~~1234567890-=!@#$%^&*()_+[\\"test\\"]'

关于php - 在 MySQL 中选择一些特殊字符时的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39741804/

相关文章:

php - 根据父 ID 值将数组从一维转换为多维

javascript - 如何在 Javascript 上添加 onChange 事件以仅重新加载选择选项

php - Laravel Eloquent 用户与 friend 的关系

php - 在 html 中回显 html 值

php - 子查询返回多于 1 行错误编号 : 1242 on Homepage in Opencart 1. 5.6

php - 删除与 Laravel 5.7 模式匹配的 Redis 键

mysql - 获取具有特定条件的所有列的计数

php - 如何在循环中创建循环...? PHP-MySQLi

mysql - 数据库连接 Yii Framework

mysql - SQL:求和返回结果的最大值