我在排序通过pdo对象连接的数据库行时遇到问题。 它只是不会排序。 我想按产品名称(varchar)排序。 希望有人可以帮助我
这是代码:
[...]
$db = new PDO($serverPDO, $user, $pass);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
[...]
if ($_SESSION['sorted'] == 1) {
$ordered = $db->query("SELECT * FROM `produkte` ORDER BY 'produkte.preis'");
while ($order = $ordered->fetch(PDO::FETCH_ASSOC)) {
echo "<tr>";
echo "<td style='border-bottom:1px solid #000000;padding:20px'>".$order['produkte.name']."</td>";
echo "<td style='border-bottom:1px solid #000000;padding:20px'>".$order['produkte.beschreibung']."</td>";
echo "<td style='border-bottom:1px solid #000000;padding:20px'>".$order['produkte.preis']." Euro</td>";
}
} else {
[...]
答案 0 :(得分:2)
使用反引号从produkte.preis
子句或转义表名称和列名中删除order by
左右的单引号:
没有逃避(因为没有必要):
$ordered = $db->query("SELECT * FROM `produkte` ORDER BY produkte.preis");
用反引号逃脱:
$ordered = $db->query("SELECT * FROM `produkte` ORDER BY `produkte`.`preis`");
如果表名和列名是MySQL Reserved words之一,则需要转义表名。
答案 1 :(得分:2)
单引号中的'produkte.preis'
将被解释为字符串值,可能相当于order by 1
,导致根本没有有意义的排序。
使用反引号:
`produkte.preis`