我有以下代码:
$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
的值并将其放入代码中(不带单引号),那么 ORDER BY 子句可以正常工作。
在研究中,我发现单引号和双引号以及普通,方形和括号括号的主题有任何数量的变化,但它们都没有用,我相信这些事情不应该是必要的。
这是如此简单的事情......不是吗?
答案 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
表示字段名称)。
如果必须引用标识符,请使用`。