鍍金池/ 問答/PHP  HTML/ 使用預(yù)處理語句時如何綁定帶有空格的參數(shù)?

使用預(yù)處理語句時如何綁定帶有空格的參數(shù)?

一個簡單的數(shù)據(jù)表:
一個簡單的數(shù)據(jù)表

我想用預(yù)處理方式將數(shù)據(jù)表以數(shù)量num倒序排列:

<?php 
header('content-type:text/html;charset:utf-8');
$mysqli = new mysqli('localhost', 'root', '', 'info');
$stmt = $mysqli->prepare("SELECT * FROM test ORDER BY ?");
$dst = 'num desc';
$stmt->bind_param('s', $dst);
$stmt->execute();
$result = $stmt->get_result();
$str = '<table width="50%" border="1" cellspacing="0" cellpadding="0">';
$str .= '<tr><th>id</th><th>名稱</th><th>數(shù)量</th><th>價格</th></tr>';
while ($row = $result->fetch_assoc()) {
    $str .= '<tr align="center"><td>'.$row['id'].'</td><td>'.$row['name'].'</td><td>'.$row['num'].'</td><td>'.$row['price'].'</td></tr>';
}
$str .='</table>';
echo $str;
$stmt->close();
$mysqli->close();
?>

但是不起作用:
圖片描述

數(shù)據(jù)庫上沒問題:
圖片描述

另外無法以"SELECT * FROM test ORDER BY ? ?"的形式進行預(yù)處理,會報錯。
求大佬幫忙看下怎么解決這個問題?

回答
編輯回答
耍太極

預(yù)處理 處理的是參數(shù),是把?替換成相應(yīng)的安全字符串,order 的參數(shù)是字段名,不是字符串。這兒應(yīng)該判斷一下字段名,然后直接拼 sql.
你的 sql 是 order by "num", 不是 order by num

2017年6月30日 19:10