Php mysql Pdo不会按名称排序

Php mysql Pdo不会按名称排序,php,mysql,pdo,Php,Mysql,Pdo,我无法对通过pdo对象连接的数据库的行进行排序。 它就是不能排序。 我想按productnamesvarchar排序。 希望有人能帮助我 代码如下: [...] $db = new PDO($serverPDO, $user, $pass); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); [...

我无法对通过pdo对象连接的数据库的行进行排序。 它就是不能排序。 我想按productnamesvarchar排序。 希望有人能帮助我

代码如下:

[...]

$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 {
    [...]

删除order by子句中produkte.preis周围的单引号,或用反勾号转义表名和列名:

不必逃跑,因为这是不必要的:

$ordered = $db->query("SELECT * FROM `produkte` ORDER BY produkte.preis");
使用反勾号转义:

$ordered = $db->query("SELECT * FROM `produkte` ORDER BY `produkte`.`preis`");

如果表名和列名是其中一个,则需要对其进行转义。

在order by子句中删除produkte.preis周围的单引号,或使用反勾号转义表名和列名:

不必逃跑,因为这是不必要的:

$ordered = $db->query("SELECT * FROM `produkte` ORDER BY produkte.preis");
使用反勾号转义:

$ordered = $db->query("SELECT * FROM `produkte` ORDER BY `produkte`.`preis`");
如果表名和列名是其中之一,则需要对它们进行转义

“produkte.preis”

在单引号中,将被解释为字符串值,可能相当于order by 1,导致没有任何有意义的排序

使用反勾号:

`produkte.preis`
“produkte.preis”

在单引号中,将被解释为字符串值,可能相当于order by 1,导致没有任何有意义的排序

使用反勾号:

`produkte.preis`