@kostarev_v
Программирую для себя

PHP + PDO. Можно ли задать в запросе колонку переменной? Т.е. подготовить запрос с неизвестной заранее колонкой?

Например хочу сделать так
$res = $pdo->prepare("UPDATE table SET :column = :value;");
$res->execute(Array(':column'=>'col1', ':value'=>'val1'));


Такое возможно? Или имя колонки нужно знать всегда заранее?
  • Вопрос задан
  • 100 просмотров
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
В общем, для одного поля задача выглядит несколько искусственной, а для обновления нескольких полей надо использовать стандартную проверку по белому списку

// the list of allowed field names
$allowed = ["name","surname","email"];

// initialize an array with values:
$params = [];

// initialize a string with `fieldname` = :placeholder pairs
$setStr = "";

// loop over source data array
foreach ($allowed as $key)
{
    if (isset($_POST[$key]) && $key != "id")
    {
        $setStr .= "`$key` = :$key,";
        $params[$key] = $_POST[$key];
    }
}
$setStr = rtrim($setStr, ",");

$params['id'] = $_POST['id'];
$pdo->prepare("UPDATE users SET $setStr WHERE id = :id")->execute($params);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы