我正在尝试从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
这个错误怎么可能?
答案 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;
(也许下次你在命名东西时可以使用更实用的名字,所以不需要每次引用它们。)