2013-09-01 3 views
-1

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

$sqlltyryrt = "UPDATE user_items SET :fggdgdf = :fggdgdf +1 WHERE username=?"; 
    $qqqqq = $db->prepare($sqlltyryrt); 
$qqqqq->execute(array('fggdgdf'=>$fggdgdf),$_SESSION['username']); 

Я искал ответ и нашел нить здесь на сайте делает то же самое:

+0

Каков ваш вопрос на самом деле? Не то, чтобы запрос выглядел корректно (AFAIK вы можете использовать одно и то же имя заполнителя только один раз в запросе, а также не имеет смысла назначать связанный параметр), просто спрашивая о том, какая часть именно вас озадачила, поскольку в данный момент это отсутствует ваш вопрос. – hakre

+0

@hakre - Я смотрю, где я их смешиваю. – andrewsi

+0

Ну, я озадачен SET, я хочу сделать SET $ fggdgdf = $ fggdgdf +1, но, конечно, это не сработает ... – user2734610

ответ

0
$sqlltyryrt = "UPDATE user_items SET :fggdgdf = :fggdgdf +1 WHERE username=?"; 
$qqqqq = $db->prepare($sqlltyryrt); 
$qqqqq->execute(array('fggdgdf'=>$fggdgdf),$_SESSION['username']); 

Вы не можете связывать имена столбцов; так что это не сработает. Там нет никакого способа, чтобы использовать связанную переменную для имени столбца или таблицы, так что единственный способ сделать это на самом деле интерполировать переменные в строку:

$sqlltyryrt = "UPDATE user_items SET $fggdgdf = $fggdgdf +1 WHERE username=?"; 
$qqqqq = $db->prepare($sqlltyryrt); 
$qqqqq->execute(array($_SESSION['username'])); 

Но вы должны быть очень уверены, что вы имеете дезактивировать переменные, иначе вы открыты для SQL-инъекции. Вы можете использовать белый список для этого, так как вы должны иметь возможность генерировать массив возможных имен столбцов и можете проверить, что переменные присутствуют в этом массиве.

Но тот факт, что вы пытаетесь связать имена комментариев, подразумевает, что ваш дизайн базы данных мог бы делать с просмотром.

+0

Спасибо, что ваш код работает. Я убеждаюсь что переменная безопасна прежде чем я использовал ее. Спасибо снова. – user2734610

Смежные вопросы