ORDER BY子句不会变
问题描述:
我有下面的代码工作:ORDER BY子句不会变
$Ordering=$_POST["fname"];
$CustName=$_POST["CustName"];
echo "Ordering----HHH".$Ordering."HHH".'</br>';
$query="SELECT * FROM Chargebacks WHERE CustName= '$CustName' ORDER BY '$Ordering'";
两个fname
和CustName
来自另一个页面。 fname
做工精细,CustName
正确呼应为$Ordering
(以下简称“HHH”是存在的,所以我可以肯定有没有偷偷摸摸的空间....)
的ORDER BY子句简直什么也不做......如果输入无效的列标题,sript只是按预期崩溃,但如果使用有效的结果,结果的顺序就是它们在源表中显示的顺序。
如果我复制并粘贴回显的$Ordering
的值并将其放入代码中(不带单引号),则子句将正常工作。
在研究中,我发现单引号和双引号以及普通,正方形和括号括号中的任意数量的变体,但它们都没有工作,我相信这样的事情不应该是必需的。
这是如此简单的事......不是吗?
答
您是否试过在您的声明中删除$Ordering
附近的引号?你自己说过,如果你删除了引号并将其替换为变量的内容。
答
1)$订购必须从表扣款 2)删除从$两侧的单引号订购
答
我敢肯定,你只需要正确串联这些变量的表格属性。
$query="SELECT * FROM Chargebacks WHERE CustName='".$CustName."' ORDER BY `".$Ordering."`";
此外,不要使用单引号,因为这使得SQL将它视为一个字符串。使用撇号(`)或者什么也没有:)
Shai。
答
应该不需要引用列名称($Ordering
代表字段名称)。 如果您必须引用标识符,请使用`。
对于报价:http://dev.mysql.com/doc/refman/5.0/en/identifiers.html
您使用的是哪种'mysql' API?有几个:mysql,mysqli和PDO_mysql。另外,ORDER BY子句中的谓词需要是表中列的名称。目前还不清楚这是否属于这种情况。 –
在开始生产之前,请先阅读关于SQL注入的所有内容。 – Jordan
将您的'order by'值加上引号会将它变成STRING,而不是字段名称。 –