奇怪的引号行为

时间:2012-01-09 18:21:29

标签: php mysql syntax

我正在使用Wampserver,Crimson编辑器和the New Boston tutorials学习SQL。在我更改引号之前没有任何作用:

使用SQL命令,常规“单引号”不起作用,但weird slanty quotes可以。

使用表单和$_GET["name"];时,只有双引号才有效。

知道这里发生了什么吗?我使用英国键盘,但视频辅导员也是如此,他使用$_GET['name'];单引号。

编辑:示例代码:

if(isset($_GET["sortBy"])&&!empty($_GET["sortBy"]) ) // only works with "full" quotes
{   $sortBy         = $_GET["sortBy"]; 
    echo "sortBy works <br><br>";
}
$topTenResult = "SELECT  `name`,`intuition`,`bravery`,`romance` FROM  `scores` ORDER BY $sortBy DESC"; 
// does not work with default keyboard single quotes

2 个答案:

答案 0 :(得分:2)

在SQL中,单引号标记字符串。

在MySQL中,后引号标记'分隔标识符'。这些名称区分大小写或与关键字冲突。后引号是MySQL独有的; MS SQL Server对同一作业使用方括号。两者都是非标准扩展。

在标准SQL中,双引号用于标记分隔标识符。除非进入符合标准的模式,否则某些DBMS会将双引号视为标记字符串;有些人会自动将它们视为分隔标识符。

答案 1 :(得分:2)

这是嵌套引号的症状。

.... " ... $_GET["name"] ...

上面的错误是因为$ _GET在双引号字符串中。因此,搜索虚假的双引号,这会使您的代码出错。

也许语法着色有帮助(就像在NetBeans IDE中一样,有很好的PHP支持)。