php - MySQL转义字符串问题

标签 php mysql

在某些 PHP 代码中,我有一个 mysql_real_escape_string() 术语,例如 foo\'s。我在我的数据库中搜索它(它也存储为 foo\'s),如下所示:

mysql_query("SELECT * FROM coupons WHERE retailerName LIKE '%" . $searchTerm . "%'");

没有变量的查询应该是这样的:

SELECT * FROM coupons WHERE retailerName LIKE '%foo\'s%'

如果我搜索 ffofoo,则搜索有效。但是,如果我搜索 foo's,则搜索不起作用(请记住,实际查询采用转义字符串,因此所有内容都应匹配)。

最佳答案

也许您编程到 mysql(JDBC 或类似)的接口(interface)正在向您的字符串添加额外的转义字符。如果将数据放入数据库的机制不是同一机制,请尝试插入以查看数据是如何存储的。

Mysql可以通过自己的接口(interface)处理查询

mysql> describe test_table;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| col1  | varchar(20) | YES  |     | NULL    |       |
| col2  | varchar(20) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.01 sec)

mysql> insert into test_table (col1, col2) values ('col1value', 'foo\'s');
Query OK, 1 row affected (0.04 sec)

mysql> select * from test_table where col2 like '%foo\'s%';
+-----------+-------+
| col1      | col2  |
+-----------+-------+
| col1value | foo's |
+-----------+-------+
1 row in set (0.00 sec)

关于php - MySQL转义字符串问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5228998/

相关文章:

php - Google OAuth 自动登录

javascript - 在 PHP 中从国家代码获取货币信息

java - 从 php JSON 对象创建 JSON 数组时出现问题

php - 我可以将这两个选择查询合并为一个吗?

php - 在与另一个表进行检查后,如何将单词插入到表中?

php - CodeIgniter:从数据库返回并显示多行

php - MongoDB::listCollections 不工作

php - MYSQL 关闭连接无法停止插入事件

mysql - Debian 9 如何在没有 MySQL 命名的情况下安装 MariaDB?

php - 如何获取数据库中特定行的相应 user_id(自动递增)值?