PDO в PHP - какие параметры я могу связать вне запроса или нет - PullRequest
0 голосов
/ 01 февраля 2012

Мне любопытно, почему этот код работает нормально:

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();
            }
        }

Я не понимаю, какие параметры могут быть связаны внеоператор запроса и какие из них должны быть включены непосредственно в оператор.

1 Ответ

1 голос
/ 01 февраля 2012

Вы не можете использовать динамические имена столбцов в качестве параметров данных в PDO (или в любой другой библиотеке PHP PHP AFAIK).

Вам нужно будет вставить имя столбца прямо в строку.Чтобы избежать внедрения SQL, следует сравнить имя столбца со списком существующих допустимых имен столбцов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...