ORDER BY子句不适用于变量

时间:2011-10-25 15:56:30

标签: php mysql

我有以下代码:

$Ordering=$_POST["fname"];
$CustName=$_POST["CustName"];

echo "Ordering----HHH".$Ordering."HHH".'</br>';

$query="SELECT * FROM Chargebacks WHERE CustName= '$CustName' ORDER BY '$Ordering'";

fnameCustName都来自另一个页面。 fname工作正常,CustName正确回显为$Ordering(“HHH”就在那里,所以我可以肯定没有偷偷摸摸的空间......)

ORDER BY 子句什么都不做......如果输入的列标题无效,则sript会按预期崩溃,但如果使用了有效的,则结果的顺序就是它们出现在源表中。
如果我复制并粘贴回显的$Ordering的值并将其放入代码中(不带单引号),那么 ORDER BY 子句可以正常工作。

在研究中,我发现单引号和双引号以及普通,方形和括号括号的主题有任何数量的变化,但它们都没有用,我相信这些事情不应该是必要的。
这是如此简单的事情......不是吗?

4 个答案:

答案 0 :(得分:3)

您是否尝试在声明中删除$Ordering周围的引号?你自己说过,如果删除引号并用变量的内容替换它就可以了。

答案 1 :(得分:0)

1)$ Ordering必须是Chargebacks表中的表属性 2)从$ Ordering

的两边删除单引号

答案 2 :(得分:0)

我很确定你只需要正确地连接这些变量。

$query="SELECT * FROM Chargebacks WHERE CustName='".$CustName."' ORDER BY `".$Ordering."`";

另外,不要使用单引号,因为那样使SQL将其视为字符串。使用撇号(`)或不使用任何东西:)

晒。

答案 3 :(得分:0)

不需要引用列名($Ordering表示字段名称)。 如果必须引用标识符,请使用`。

引用:http://dev.mysql.com/doc/refman/5.0/en/identifiers.html