当前位置: 首页 > 面试题库 >

转义字符串是什么意思?

景帅
2023-03-14
问题内容

我在阅读$ _SESSION
[‘username’]进入SQL查询之前是否需要转义?
它说:“无论源如何,都需要对传递给sql查询的每个字符串进行转义”。现在我知道类似这样的事情是非常基本的。Google搜索显示超过20,000个结果。仅Stackoverflow就有20页的结果,但是没有人实际解释转义字符串是什么或如何转义。只是假设。你能帮助我吗?我想学习,因为我一如既往地使用PHP制作网络应用。

我看过: 插入转义字符,Java中所有的转义字符是什么?,不能
使用addcslashes()转义字符串,
转义字符,
mysql_real_escape_string()的作用是什么?,
如何在php的字符串中转义双引号?,
MySQL_real_escape_string不添加斜杠?,
我可以继续从php中的字符串中删除转义序列,但是我确定你明白了。这不是懒惰。


问题答案:

转义字符串意味着减少该字符串中使用的引号(和其他字符)的歧义。例如,定义字符串时,通常将其用双引号或单引号引起来:

"Hello World."

但是,如果我的字符串中包含双引号怎么办?

"Hello "World.""

现在我有歧义-解释器不知道我的字符串在哪里结束。如果要保留双引号,则有两种选择。我可以在字符串周围使用单引号:

'Hello "World."'

或者,我可以避免引用:

"Hello \"World.\""

任何以斜杠开头的引号均会 转义 ,并应理解为字符串值的一部分。

当涉及查询时,MySQL会监视某些关键字,这些关键字我们不能在查询中使用而不会引起混淆。假设我们有一个值表,其中一列名为“选择”,我们想选择该值:

SELECT select FROM myTable

现在,我们在查询中引入了一些歧义。在我们的查询中,我们可以通过使用反引号来减少歧义:

SELECT `select` FROM myTable

这消除了我们在选择字段名称时缺乏判断力而引起的混乱。

只需将值传递给即可为您解决很多问题mysql_real_escape_string()。在下面的示例中,您可以看到我们正在通过此函数传递用户提交的数据,以确保它不会对我们的查询造成任何问题:

// Query
$query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
            mysql_real_escape_string($user),
            mysql_real_escape_string($password));

其他方法转义字符串,如存在add_slashesaddcslashesquotemeta,和更多的,但你会发现,当我们的目标是运行安全的查询,由大开发商喜欢mysql_real_escape_stringpg_escape_string(在PostgreSQL中的上下文。



 类似资料:
  • 我正在阅读在进入SQL查询之前是否需要转义$_session['username']?它说“您需要转义传递给sql查询的每个字符串,而不管它的来源是什么”。现在我知道像这样的东西是非常基本的。谷歌搜索结果超过2万个。仅Stackoverflow就有20页的结果,但没有人真正解释什么是转义字符串,或者如何转义字符串。这只是假设。你能帮帮我吗?我想学习,因为我一直在用PHP制作一个web应用程序。 我

  • 问题内容: 如果我从命令行运行,则截至2017年8月24日的最后一项是 上面在软件包版本中反映的构建字符串的含义是什么?这是软件包所需的python interpereter的最低版本吗? 问题答案: 该程序包的构建字符串()的第一部分告诉您该程序包可用于的Python解释器的确切版本。最有可能的,也有其他包的Python(其他版本,等)。第二部分(下划线之后)告诉您此软件包的内部版本号。当构建配

  • 我将以下代码添加到我用Java创建的新类中: 我理解public、static和void的含义,但()的含义是什么?

  • 问题内容: 我正在查看类似于以下内容的代码行: 我认为符号字符串是指每小时,每分钟等显示的数字字符的数量-或类似的东西,我不确定。 通常,我可以弄清楚这种情况,但是在Google上搜索“%02d%01d”时找不到任何有用的参考。有人能为我阐明一下吗? 问题答案: http://www.cplusplus.com/reference/clibrary/cstdio/printf/ 相同的规则应适用于

  • 本文向大家介绍PowerShell中的转义字符是什么?,包括了PowerShell中的转义字符是什么?的使用技巧和注意事项,需要的朋友参考一下 PowerShell中转义字符是`,向后撇号(backward apostrophe,是tab键上面的按键,不是单引号),例如: 会输出$env:processor_architecture=AMD64 当然还有一个转义字符是在正则表达式(Regular

  • 问题内容: 我知道Java中的一些转义字符,例如 哪里有完整的清单? 问题答案: 你可以在此处找到完整列表。 此时在文本中插入一个选项卡。 此时,在文本中插入一个空格。 此时在文本中插入换行符。 此时在文本中插入回车符。 此时,在文本中插入换页。 此时,请在文本中插入一个单引号字符。 此时,请在文本中插入双引号字符。 此时在文本中插入一个反斜杠字符。