【发布时间】:2019-09-15 13:09:08
【问题描述】:
我正在使用以下方法向数据库中添加数据:
public function updatePayment($data) {
$result = 0;
$payment = new Payment();
// Payment is 'before'
if (isset($data['payday'])) {
if ($data['payday'] == 'before') {
$payment->setBefore(1);
$payment->setAfter(0);
$payment->setBeforeAfter(0);
$result = 1;
}
elseif ($data['payday' == 'after']) {
$payment->setBefore(0);
$payment->setAfter(1);
$payment->setBeforeAfter(0);
$result = 1;
}
elseif ($data['payday'] == 'before_after') {
$payment->setBefore(0);
$payment->setAfter(0);
$payment->setBeforeAfter(1);
$result = 1;
}
}
if ($result == 1) {
$this->em->persist($payment);
$this->em->flush();
}
return $result;
}
但我收到以下错误:
执行'INSERT INTO payment (work_id, task_id,之前,之后,before_after,里程碑,最小值,最大值, hourly_rate) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)' with params [null, 空,1,0,0,空,空,空,空]:
SQLSTATE[42000]:语法错误或访问冲突:1064 你有一个 SQL 语法错误;检查与您对应的手册 MariaDB 服务器版本,用于在 'before, 附近使用正确的语法, after, before_after, 里程碑, min, max, hourly_rate) VALUES (NULL, NUL' 在第 1 行
这就是我的桌子的样子:
我只想向before、after 和before_after 列添加值。所以我不认为我也必须向其他列插入值,因为默认值应该是NULL。
我做错了什么?
【问题讨论】:
-
很遗憾,您选择的列名(
before和after)在查询中使用时必须括在反引号中。 -
奇怪的是,默认情况下框架从不向列名添加反引号。
标签: php mysql sql symfony symfony4