gpt4 book ai didi

php - 我可以在 PDO 中使用列名作为参数吗?

转载 作者:太空宇宙 更新时间:2023-11-03 10:52:42 24 4
gpt4 key购买 nike

我正在尝试执行此操作:

$colparam = 'abcd';
$stmt = $db->prepare("SELECT DISTINCT ? AS kol FROM katalog ORDER BY kol ASC");
$stmt->execute(array($colparam));
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

它不工作(没有错误,结果只是空数组)。

相反,这工作正常:

$stmt = $db->prepare("SELECT DISTINCT abcd AS kol FROM katalog ORDER BY kol ASC");
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

那么在 PDO 中使用参数作为列名有什么问题吗?

最佳答案

不,您不能对 MySQL 中的任何数据库对象(表、列等)使用参数替换。

当您考虑准备好的语句实际上是什么时,这是完全有道理的。 MySQL如何在连涉及的数据库对象都不知道的情况下准备查询执行计划。

我当然希望更多的文档能够真正涵盖准备好的语句实际上做了什么(除了它明显用于参数化之外)。

这里是 MySQL 准备好的语句文档的链接以供更多阅读:

https://dev.mysql.com/doc/refman/5.6/en/sql-syntax-prepared-statements.html

关于php - 我可以在 PDO 中使用列名作为参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23254801/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com