我在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中理解了。意味着连接,这个代码添加到空字符串""?
请帮助,我真的搞砸了这个。
答案 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'