当我写这个查询时:
$query_Recordset1 = "SELECT * FROM `control de proyectos` ORDER BY ".$_GET['ordenar']." ASC";
出现以下错误:
您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 在第1行'ASC'附近
有谁知道为什么?
编辑我不得不说我已经制作了一些按钮来订购这样的行:
<input type="button" value="Ordenar por Numero de proyecto" onclick="location.href='VistaControl(Pgmaestra).php?ordenar=Numero de proyecto';"/>
答案 0 :(得分:0)
$ordenar =$_GET['ordenar'];
if(isset($ordenar))
{
$query_Recordset1 = "SELECT * FROM `control de proyectos`
ORDER BY '".$ordenar."' ASC";
}
答案 1 :(得分:0)
您似乎有很长的表名和列名,例如control de projectos
和Numero de proyecto
。虽然这些名称在MySQL中可以正常运行,但许多人认为它们在编写查询时很难使用。你在这里的经历证实了这种信念。
您想要的查询是(我相信):
SELECT * FROM `control de proyectos` ORDER BY `Numero de proyecto` ASC
请注意围绕长表和列名称的反引号。您的PHP代码不能正确生成反引号。你需要的是这样的东西。
$query_Recordset1 = "SELECT * FROM `control de proyectos`
ORDER BY `" . $_GET['ordenar'] . "` ASC";
这会将反引号放在正确的位置,以使您的查询有效。
现在看:在评论中,人们已经说过直接使用$_GET[]
操作的结果创建查询是危险的。这是非常正确的。破解者 - 所谓的脚本小子 - 有各种廉价的网站破解脚本,寻找这些类型的漏洞。他们甚至不需要技能来做到这一点。如果你使用这种代码,一些脚本小子将攻击并销毁你的网站。
请查看如何在ORDER BY
子句中避免SQL注入。例如:Prevent SQL Injection in ORDER BY clause