У меня есть следующий код, который должен увеличивать значение поля на 1 в подготовленном операторе PHP mysql:
function db_OP_doVote($pdo, $postid, $votetype) { $prepStatement = $pdo->prepare( "UPDATE content_posts SET `:votetype` = `:votetype` + 1 WHERE `id` = :id" ); $prepStatement->execute(array(':votetype' => $votetype, ':id' => $postid)); echo "Success"; }
Это, однако, ничего не делает. Никакая ошибка не возвращается из-за неправильного синтаксиса SQL, и сценарий завершается, но мое поле не обновляется вообще.
Значения для этого скрипта передаются через jQuery post () в этот скрипт:
//isset checking here $postID = (int)$_POST['id']; $voteType = $_POST['type']; if ($voteType == "y") { $trueType = "v-cool"; } elseif ($voteType == "m") { $trueType = "v-meh"; } elseif ($voteType == "n") { $trueType = "v-shit"; } else { die(); } $db = db_Connect(); db_OP_doVote($db, $postID, $trueType);
Который также, кажется, фильтрует значения и посылает их штраф. Я не могу окунуться в суть проблемы. Приращение поля является BIGINT (20).
Что мне не хватает?
EDIT: решила проблему.
Комментарий NB ударил ноготь по голове – привязка имени столбца приводит к его цитированию, что делает недействительным запрос. Благодаря!