我是PHP / sql的新手,但我似乎无法弄清楚为什么这个函数没有返回一个适当排序的数组。它返回了正确的结果,但它们没有排序。
//TAKE PRODUCT ID RETURN ARRAY OF PRODUCT INFO
function productinfo($pid) {
global $sql;
$query = "SELECT * FROM Products
WHERE Product_ID = '$pid'
ORDER BY 'P_Name'";
$result = mysqli_query($sql, $query);
$array = array();
if(mysqli_num_rows($result) < 1) {
echo mysqli_error($sql);
}//END IF
else{
while($row = mysqli_fetch_array($result)) {
array_push($array, $row['Product_ID']);
array_push($array, $row['P_Name']);
array_push($array, $row['Charge_Desc']);
array_push($array, $row['Low_Price']);
array_push($array, $row['High_Price']);
array_push($array, $row['Link']);
array_push($array, $row['Description']);
}//END WHILE
}//END ELSE
return $array;
}//END FUNCTION
编辑:将Mysql查询更改为下面的代码,仍然没有获得排序数组。
$query = "SELECT * FROM Products
WHERE Product_ID = '$pid'
ORDER BY P_Name ASC"
答案 0 :(得分:3)
将ORDER BY 'P_Name'
替换为ORDER BY P_Name
,否则您只是不在ORDER BY
中使用该列。
您还使用相同的$pid
转义'
变量。删除它们,这将工作。
之后,出于安全原因,您必须使用预准备语句重写它:)
P.S。正如评论中指出的那样,如果你想要删除恰好是列名的保留字,你可以使用反引号
答案 1 :(得分:0)
问题在于:
SELECT * FROM Products WHERE Product_ID = '$pid' ORDER BY 'P_Name'
-- -----^
您使用字符串'P_Name'
而不是列名P_Name
。试试这个:
SELECT * FROM Products WHERE Product_ID = '$pid' ORDER BY `P_Name`
在这种情况下(事实上,大多数情况下)反引号是可选的,因此ORDER BY P_Name
也可以正常工作。