为什么这个SQL查询语法不正确?

时间:2015-12-29 09:27:24

标签: php mysql

我正在尝试从MySQL数据库中检索一些视频信息,并通过$_GET["v"]请求和一个mysql查询“在下面看到”来搜索它:

$video = $_GET['v'];
$query = "SELECT * FROM vid--data WHERE v = '".htmlspecialchars($video)."'";
$result = mysql_query($query);
if (!$result) {
die('Invalid query: ' . mysql_error());
}

这是我得到的错误:

Invalid query: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '--data WHERE v = '5JxC0plA3kz'' at line 1

这个错误怎么可能?

1 个答案:

答案 0 :(得分:2)

首先,PHP和SQL是完全不同的语言。这个问题与PHP完全无关。

关于SQL语法,Language Structure章节提供了完整的概述,但您明确违反了Schema Object Names中解释的内容:

  

标识符可以引用或不引用。如果标识符包含   特殊字符或是保留字,必须随时引用   你指的是它。

......和:

 Permitted characters in unquoted identifiers:

    ASCII: [0-9,a-z,A-Z$_] (basic Latin letters, digits 0-9, dollar, underscore)

    Extended: U+0080 .. U+FFFF

...因此未加引号标识符中不允许-。请引用它:

  

标识符引号字符是反引号(“`”):

mysql> SELECT * FROM `select` WHERE `select`.id > 100;

(也许下次你在命名东西时可以使用更实用的名字,所以不需要每次引用它们。)