2015-02-06 5 views
-1

Это не будет обновлять строку в db Его просто система изменения языка, и когда я думаю о ней из-за строки post post, тогда я не использовал строку, переданную в запрос, и она все еще не работает Так вот кодЗапрос mysqli wont update

$whatlanguage = $_GET['languageoption']; 
$sql = "UPDATE people SET language=bosanski WHERE id='$user_id'"; 
$_POST['settingsuccess'] = 1; 
if (!mysqli_query($con, $sql)) 
{ 
    echo "Error: " . mysqli_error($con); 
} 

ошибка

Error: Unknown column 'bosanski' in 'field list'

+0

'язык = bosanski' это строка; рассматривать его как таковой. –

+1

Что такое '$ whatlanguage' там? Вы не используете его нигде, и '$ user_id' никогда не определяется ... плюс, установка' settingsuccess' в true безоговорочно довольно бессмысленно. вы должны сделать это только после того, как вы подтвердите успех. –

+0

** Создание SQL-операторов с внешними переменными делает ваш код уязвимым для атак SQL-инъекций. ** Кроме того, любые входные данные с одинарными кавычками в нем, такие как «O'Malley», взорвут ваш запрос. Узнайте о параметризованных запросах, предпочтительно с модулем PDO, для защиты вашего веб-приложения. [Этот вопрос] (http://stackoverflow.com/questions/60174) содержит множество подробных примеров. См. Также http://bobby-tables.com/php для альтернатив и объяснения опасности. Запуск кода SQL, построенного с использованием внешних данных, похож на суп из ингредиентов, найденных на вашем пороге. –

ответ

3

вы должны процитировать ваши строки, в противном случае MySQL считает, что вы просите его посмотреть на другой столбец в той же таблице

$sql = "UPDATE people SET language='bosanski' WHERE id='$user_id'"; 

Я также надеюсь, что $user_id не является сырым после переменной, потому что, вы знаете, SQL Injection

+0

Хорошо, что работает, но когда я вставляю строку, он все равно не будет обновлять – Champa

+2

Ну, что такое '$ user_id'? Попробуйте 'echo $ sql;' и посмотрите, что на самом деле отправляется в базу данных – Machavity