当前位置: 首页 > 知识库问答 >
问题:

转义字符串意味着什么?

戴瑞
2023-03-14

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

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

共有1个答案

贺乐意
2023-03-14

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

"Hello World."

但是如果我的字符串中有双引号呢?

"Hello "World.""

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

'Hello "World."'
"Hello \"World.\""
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));
 类似资料:
  • 我想创建一个

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

  • 问题内容: 下面是代码片段。 有人可以向我解释@符号在Java中的含义吗? 问题答案: 这是一个注释。 注释是元数据的一种形式。它们提供的程序数据不属于程序本身。注释对其注释的代码的操作没有直接影响。 注释确实会影响工具和库对待程序的方式,进而会影响正在运行的程序的语义。可以从源文件,类文件中读取注释,也可以在运行时从中读取注释。

  • 问题内容: 我了解这是用来创建别名的。因此,将一个长名称别名为一个短名称是有意义的。但是,我看到一个查询 ,这意味着什么? 问题答案: 可以以多种方式使用别名,而不仅仅是缩短长列名。 在这种情况下,您的示例意味着您将返回一列始终包含的列,并且其别名/列名称为。 当您使用计算值(例如)时,也可以使用别名。

  • ELIFECYCLE是什么意思? 我在寻找两个答案中的一个:ELIFECYCLE是什么意思?(或者)为什么我的应用程序代码中出现错误?

  • 问题内容: 使用或不使用变量访问变量之间有什么区别? 问题答案: 所述使它成为 用户定义 会话 变量。否则它将是 本地范围的 变量(在存储过程中),您必须先在本地使用它。如果需要,还可以设置 全局 系统 变量(使用或)。以及带有或或的会话 系统 变量。 有关详细信息,从文档:如果没有修饰符,改变会话变量(这就是为什么你在存储过程中的第一个当地人)。如果设置了多个系统变量,则该语句中的最新变量或修饰