2016-01-05 7 views
0

У меня есть простой запрос на обновление, который почему-то не работает. Уже пытаюсь изменить его на некоторое время и сравнить его с другими обновлениями, но независимо от того, что я меняю, он не работает. Две строки в одной таблице с одним и тем же учителем должны быть обновлены с одинаковым значением.Обновление нескольких строк с одинаковым идентификатором и одинаковым значением

Вот запрос:

$StatusChangeQuery = "UPDATE teachers SET status_id = $status_id WHERE teacher_id = '20'"; 

$pdo->query($StatusChangeQuery); 

Я знаю, что это действительно просто один, но я получаю следующее сообщение об ошибке:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 
1064 You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version for 
the right syntax to use near 'WHERE teacher_id = '20'' at line 1' in /var/www/xxx/html/teacher.php:225 
Stack trace: #0 /var/www/xxx/html/teacher.php(225): 
PDO->query('UPDATE teachers...') #1 {main} thrown in /var/www/xxx/html/teacher.php on line 225 

И соответствующие учителя строки выглядят как:

+---+-------------+------------+ 
|id | teacher_id | status_id | 
+---+-------------+------------+ 
| 1 |  20  |  1  | 
| 2 |  20  |  1  | 
+---+-------------+------------+ 
+1

Какова ценность '$ status_id', когда возникает ошибка? – Nate

+0

Если столбец teacher_id основан на базе INT, вам не нужны котировки вокруг '20' – Haymaker

+0

Можете ли вы напечатать $ StatusChangeQuery перед запуском запроса и опубликовать его? –

ответ

0

Как следует из комментариев, возможно, существует проблема с $status_id.

Поскольку вы используете PDO, желательно подготовить ваши заявления.

$smt = $pdo->prepare("UPDATE teachers SET status_id=? WHERE teacher_id=?"); 
$smt->execute(array($status_id, 20)); 
+0

@ Nate B, Haymaker, cyber.sh и rybo111: Спасибо, ребята, вы были правы, возникла проблема с $ status_id -> я узнал ее после того, как напечатал $ StatusChangeQuery. Решил теперь -> Я использовал $ _POST вместо $ _GET. И теперь я использовал подготовленные заявления, спасибо за совет! – Franky2207