我正在尝试根据用户从下拉列表中选择的内容来订购SQL select查询。这是列表的代码
<select name="order">
<option value="Patients_name">Name</option>
<option value="Patients_age">Age</option>
<option value="Patients_address">Address</option>
</select>
$ord=$_POST['order'];#taking the value from the list
$query="Select * from Patients ORDER BY '$ord'";
$result= mysql_query($query);
如果我替换
$query="Select * from Patients ORDER BY '$ord'";
通过
$query="Select * from Patients ORDER BY Patients_age";
Patients_name,Patients_address
虽然打印$ ord会给我正确的值,但它完美有效。
知道为什么它没有采用$ ord的价值
答案 0 :(得分:1)
ORDER BY需要一个列名。把它放在引号中,你就是把它变成一个字符串。删除$ord
周围的单引号。
顺便说一句,你所做的是非常危险并且对SQL注入持开放态度。您应该验证提交的列实际上是一列并允许。
答案 1 :(得分:0)
不要将$ org放在''
内。
$query = "Select * from Patients ORDER BY $ord";