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语句。我想,通过集中这些值可以获得一些好处,但这将以牺牲可读性为代价。