我有下面的代码工作: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
的值并将其放入代码中(不带单引号),则子句将正常工作。
在研究中,我发现单引号和双引号以及普通,正方形和括号括号中的任意数量的变体,但它们都没有工作,我相信这样的事情不应该是必需的。
这是如此简单的事......不是吗?
您使用的是哪种'mysql' API?有几个:mysql,mysqli和PDO_mysql。另外,ORDER BY子句中的谓词需要是表中列的名称。目前还不清楚这是否属于这种情况。 –
在开始生产之前,请先阅读关于SQL注入的所有内容。 – Jordan
将您的'order by'值加上引号会将它变成STRING,而不是字段名称。 –