PHP中的PDO-我可以在查询外部绑定或不绑定哪些参数

PHP中的PDO-我可以在查询外部绑定或不绑定哪些参数,php,pdo,Php,Pdo,我很好奇为什么这个代码工作得很好: function updateRecord($idFieldName, $recordID, $fieldName, $recordValue){ $dbConnection=$this->dbConnect(); $updated=false; while (!$updated){ $query=$dbConnection->prepare("

我很好奇为什么这个代码工作得很好:

function updateRecord($idFieldName, $recordID, $fieldName, $recordValue){
            $dbConnection=$this->dbConnect();
            $updated=false;
            while (!$updated){
                $query=$dbConnection->prepare("UPDATE $this->table SET $fieldName = :recordValue WHERE $idFieldName = :recordID");
                $query->bindParam(":recordValue", $recordValue);
                $query->bindParam(":recordID", $recordID);
                $updated=$query->execute();
            }
        }
然而,这一条没有:

function updateRecord($idFieldName, $recordID, $fieldName, $recordValue){
            $dbConnection=$this->dbConnect();
            $updated=false;
            while (!$updated){
                $query=$dbConnection->prepare("UPDATE $this->table SET :fieldName = :recordValue WHERE $idFieldName = :recordID");
                $query->bindParam(":fieldName", $fieldName);
                $query->bindParam(":recordValue", $recordValue);
                $query->bindParam(":recordID", $recordID);
                $updated=$query->execute();
            }
        }
我不知道哪些参数可以绑定到查询语句之外,哪些参数必须直接包含在语句中。

您(也不知道在任何其他PHP SQL库AFAIK中)


您必须将列名直接插入字符串中。为了避免SQL注入,您应该将列名与现有有效列名列表进行比较。

发生了什么或没有发生什么?在哪一点上哪个代码失败?如何?在我的情况下,
$fieldName
的可能重复不是用户输入,而是来自我的代码。我想在这种情况下,我不需要switch语句。我想,通过集中这些值可以获得一些好处,但这将以牺牲可读性为代价。