有人可以解释这段代码的语法吗?

时间:2015-07-09 23:24:35

标签: php mysql

我在php文件中有以下查询可以正常工作:

$query = "SELECT `name` FROM users WHERE name='".mysqli_real_escape_string($link,$name)."'";

我在教程中得到了它,所以我试图绕过语法。特别是这部分:

'".mysqli_real_escape_string($link,$name)."'

如果函数mysql_real_escape_string()返回一个字符串,为什么需要双引号?另外,我在php中理解了。意味着连接,这个代码添加到空字符串""?

请帮助,我真的搞砸了这个。

4 个答案:

答案 0 :(得分:3)

需要双引号,因为这是使用字符串连接来组成查询。这是一种非常混乱的方式,因为mysqli驱动程序支持占位符:

$query = "SELECT `name` FROM users WHERE  name=?";

?表示数据的去向。然后,您可以使用bind_param方法在其中添加$name值。

如果您因使用占位符而受到纪律处分,则您不必担心引用或proper escaping

答案 1 :(得分:0)

大多数计算机程序中有两种类型的引号:'"。您可以使用两个相同的类型来包含字符串,例如'abc'"def"。但是,当您在其他引号中需要引号时,可以放置'"'。语法不响应不同类型的引用。同样的原则适用于此。

在这种情况下,代码行可以表示为

`$query = "SELECT `name` FROM users WHERE  name=''";`

但是单引号需要内容。通过串联添加。

答案 2 :(得分:0)

单引号标识您正在构建的SQL查询中的字符串。

您的查询将在例如:

中生成
 SELECT `name` FROM users WHERE name='John';

(请注意John周围的引语)

反引号用于挖掘对象名称。

答案 3 :(得分:0)

此代码中没有空字符串。最后一个"'"只是关闭在name='"中打开的单引号字符串。在mysql查询中,字符串必须用引号括起来,此处函数返回用单引号括起来的字符串。这可以这样澄清:

$name = mysqli_real_escape_string($link,$name);
$query = "SELECT `name` FROM users WHERE name='".$name."'";

假设变量$name = 'Joffery' 然后$query变量将像这样打印

SELECT `name` FROM users WHERE name='Joffery'