【发布时间】:2011-04-21 00:23:19
【问题描述】:
我正在浏览一些代码并将其中的数据库部分更改为使用 PDO。到目前为止一切正常,除了我准备好的语句中的参数。出于某种原因,下面的代码根本不起作用。这两个 $_GET 变量基本上用于在特定页面上进行排序。查询本身可以在不使用参数的情况下正常工作,如果我在最后手动输入“ORDER BY id DESC”,那也可以正常工作。我似乎无法让它与可变参数一起工作。代码如下:
$sort = $_GET['sort'];
$order = $_GET['order'];
$statement = $db->prepare('SELECT uid, id, fname, lname, ext, uname
, email, access, created, modified, last_login, enabled
FROM users
ORDER BY :col :or');
$statement->bindParam(':col', $sort);
$statement->bindParam(':or', $order);
$statement->execute();
$num = $statement->rowCount();
有什么建议吗?
谢谢
【问题讨论】:
-
漂亮的 PDO 代码,execute() 不只适用于没有结果集的 sql 语句吗? (更新/插入/删除)?
-
@Johan
PDOStatement::execute()适用于任何声明 - php.net/manual/en/pdostatement.execute.php -
@Phil,好的,谢谢,学到了新知识。
-
绑定参数只能是值,不能是表达式(在这种情况下=列名)。