我有一个简单的更新查询,但不知怎么的不起作用。已经尝试更改它一段时间了,并将其与其他更新查询进行了比较,但无论我更改什么,它都不起作用。同一表中具有相同teacher_id的两行应更新为相同的值。
以下是查询:
$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 |
+---+-------------+------------+
正如注释所示,$status_id
可能存在问题。
由于您正在使用PDO,因此建议准备您的报表。
$smt = $pdo->prepare("UPDATE teachers SET status_id=? WHERE teacher_id=?");
$smt->execute( array($status_id, 20) );