如何在存储转义字符串的字段上进行搜索?

时间:2015-09-23 作者:Ghazanfar Mir

我在数据库中有自定义表,即。g_projects 柱荷载。数据使用Wordpress原生插入查询存储在表中,即。$wpdb->insert, 因此他们逃脱了。

For example

Input: 申请文件

Database: 应用程序的文档

问题是如何对转义列执行搜索,因为它们存储为“应用程序的文档”,而我希望能够搜索为“应用程序文档”。

下面的查询不返回任何内容:

$wpdb->query("SELECT * FROM g_projects WHERE type=\\"Application\'s Document\\""); 

Edit #1

我正在使用POSTMAN插件调用API,然后使用$wpdb->insert() 方法插入新记录。经过进一步调查,我发现斜杠实际上是由POSTMAN 因为如果我使用POSTMAN 它存储转义字符串。鉴于,如果我使用$wpdb->insert() 它将直接存储不带斜杠的字符串,如下@TheDeadMedic所建议的那样

Edit #2

这是对那些使用邮递员遇到类似问题的人的最后一次编辑。邮递员在传递到$wpdb->insert() 作用因此,使用$wpdb->unslash() 在传递到insert函数之前,在$data上。

1 个回复
SO网友:Dunimas

我想HeadMedic想说的是,SQL中的数据不应该有转义。您可能希望运行查询来删除转义符,但这可能会很复杂。在此之前,您将无法搜索“应用程序文档”并返回任何结果。

在将字符串转义到数据库中时,最好的选择是使用准备好的语句。这是最安全的方法,可以避免用字符破坏SQL语句,还可以防止SQL注入。

但是,如果您使用的是不支持它的旧服务器,则必须使用转义功能。在PHP中,MySQL有一个方法MySQL\\u real\\u escape\\u string($value),它可以为您完成此操作。把你所有的品种都包在里面。总比什么都没有好。

相关推荐

Media searching ignored

我们的网站使用WordPress,有很多媒体文件。我们网站的媒体名称格式如下[Car brand\'s name]-[number].jpg, 例如Tesla-1.jpg 或Aston Martin-3.jpg. 因此,我们可以通过搜索文章的名称轻松找到文章的特定媒体。但突然间,我们找不到媒体。我们正在尝试搜索名称为的媒体,但搜索结果不变。(不搜索任何内容时的媒体屏幕)(搜索Aston Martin时的媒体屏幕)当然,在填充搜索文本框后,它会显示一个加载图标,但结果总是一样的。为什么会发生这种情况?更新+