我有一段代码,我不断收到语法错误的代码像帖:什么是“”实际上是在PHP语法意味着
$query ="SELECT * from `jos_menu` where `id` = ".'\".$parent.'\";
现在,当我重新格式化为:
$query ="SELECT * from `jos_menu` where `id` = ".$parent;
这就是当我删除:'\“ 它工作正常。所以,我只是想知道,什么是(“\”)实际做???
我有一段代码,我不断收到语法错误的代码像帖:什么是“”实际上是在PHP语法意味着
$query ="SELECT * from `jos_menu` where `id` = ".'\".$parent.'\";
现在,当我重新格式化为:
$query ="SELECT * from `jos_menu` where `id` = ".$parent;
这就是当我删除:'\“ 它工作正常。所以,我只是想知道,什么是(“\”)实际做???
与
$query ="SELECT * from `jos_menu` where `id` = ".'\".$parent.'\";
唯一的问题是,你错过了一些'
:
$query ="SELECT * from `jos_menu` where `id` = ".'\"'.$parent.'\"';
在PHP中,一个字符串可以是:
$var = 'This is a string';
或者
$var = "This is a string";
如果你想要把"
,你已经开始"
在字符串中,你需要告诉PHP,你不希望你的第二个"
结束字符串,但使用的字符作为"
字符串的一部分本身。这是\"
所做的。它告诉PHP,不要给"
字符有任何特殊含义;因为通常如果你用"
开始字符串,下一个"
会结束字符串。
\
手段删除任何“特殊”,意味着下一个字符
如果\
之后的字符将有特殊的含义里,才能工作。一些例子:我们
假设要打印Hello "World". I am a string!
:
$var = "Hello "World". I am a string!";
在这个例子中,我们都会有错误的。由于我们以"
开始字符串,因此下一个"
将关闭字符串。那么PHP的想法:
"
开始串的字符串变量的Hello
一部分。"
嘿,因为我看到字符串是从"
开始的,这意味着它的结束!World"
< - 错误停止处理并抛出错误。
但是,如果我们写:
$var = "Hello \"World\". I am a string!";
现在,PHP认为:
"
字符串的开始字符串变量\
啊Hello
部分,没关系,下一个我应该删除任何特殊含义的字符"
好的,这是\
之后,所以我只是正常使用它,作为"
。串\
奥凯的World
部分,下一个字符我将删除任何特殊含义"
现在,这是一个正常的"
. I am a string!
- 字符串变量的一部分。"
啊!由于字符串是从"
开始的,所以这必定是结局。;
结束语句。希望能够为您澄清事情。
\
是转义字符,这意味着下一个字符应该从字面上看,没有照顾其特殊的意义。
在PHP中,如果字符串是用双引号分隔的(并且开发人员只是想要一个前面的单引号),您通常会在字符串中看到'\"
。
它表示转义字符下一个出现在字符后面的字符,将被视为其当前形式。
您的查询是不正确逃脱
$query ="SELECT * from `jos_menu` where `id` = ".'\".$parent.'\";
//^ You mismatched the quotes from here
一个正确转义查询应该是
$query ="SELECT * from `jos_menu` where `id` = \"$parent\"";
//^Note here " will printed as it is within the query
例如, 如果$parent
是2
,那么查询将
SELECT * from `jos_menu` where `id` = "2"
它工作正常,因为你有一个数字VA lue - 所以mysql会自动将字符串转换为一个数字。所以,你得到2级不同的查询(假设$parent = 42;
:
SELECT * from `jos_menu` where `id` = 42
VS
SELECT * from `jos_menu` where `id` = "42"
有几件事情:
'\''
//输出单'
\n
换行符,\t
tab charact er等反斜杠之后逃逸下一个字符;在您的例子,这会工作:
$query = "SELECT * from jos_menu where id = ".$parent;
但这样会这样:
$query = "SELECT * from jos_menu where id = $parent";
逃离时的报价,它使用的括号的类型而异。随着双括号,您可以包括可变权到字符串,只是要小心通过键访问数组:
$var = "This \"works\" ".$fine.".";
$var = "This 'also' works just $fine.";
$var = "This $will['fail'].";
$var = "However, $this[will] work and so ".$will['this'].".";
规则同样适用于单括号。
“*使用[准备语句](http://ca2.php.net/manual/en/book.pdo.php)*”,这是一个值得一提的远处答案。 – Dan 2012-03-28 05:24:23