我如何写一个与MySql中的受保护关键字名称相同的表的SQL?
以下查询将不会执行
mysql_query("SELECT * FROM order WHERE orderID = 102;");
它会产生以下错误信息:
你的SQL语法有错误; 检查与您的MySQL服务器版本相对应的手册,在第2行附近使用“order WHERE orderID = 102”附近的正确语法
我如何编写SQL将成功查询此表?
订单是一个保留字。 不要使用保留字作为表或字段名称; 或者将其包装在转义字符中,比如`for mysql。 就我个人而言,我只是避免使用它们,因为从长远来看,它们通常会导致更多的头痛。
例:
mysql_query("SELECT * FROM `order` WHERE orderID = 102;");
更多信息 – 你可以在这里获得更多关于保留字的信息https://dev.mysql.com/doc/refman/5.5/en/keywords.html
让我感到疯狂的是,人们假设查询会起作用,然后甚至不要求数据库来解释为什么事情会被炸毁。 尝试这个:
$result = mysql_query("SELECT * FROM order WHERE orderID = 102;") or die(mysql_error());
而且,除非上面显示的代码多于您的代码,否则您必须捕获查询调用的返回值,因为该返回值是您的结果句柄,您可以从中获取结果。 没有这个语句句柄,你基本上是在浪费DB服务器(和你自己)的时间。
尝试
mysql_query("SELECT * FROM order WHERE orderID = 102;") or die("MySQL ERROR: ".mysql_error());