尝试将数据插入MySQL时出错

时间:2019-09-15 13:09:08

标签: php mysql sql symfony symfony4

我正在使用以下方法将数据添加到数据库:

import { Component } from '@angular/core';

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: [ './app.component.css' ]
})
export class AppComponent  {
  name = 'Angular';
  public  sampleClick(){
    console.log('!')
  }
}

但是出现以下错误:

  

执行'INSERT INTO付款(work_id,   task_id,之前,之后,before_after,里程碑,最小,最大,   hourly_rate)VALUES(?,?,?,?,?,?,?,?,?,?)',带有参数[null,   null,1、0、0,null,null,null,null]:

     

SQLSTATE [42000]:语法错误或访问冲突:1064您有一个   您的SQL语法错误;检查与您的手册相对应的手册   MariaDB服务器版本可在'before,附近使用正确的语法,   after,before_after,里程碑,min,max,hourly_rate)VALUES(NULL,   NUL'位于第1行

这是我的桌子的样子:

enter image description here

我只想将值添加到列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; } beforeafter中。因此,我认为不必将值插入其他列,因为默认值应为before_after

我在做什么错了?

1 个答案:

答案 0 :(得分:2)

beforeafterreserved words in MySQL

您需要使用反引号在查询中将其转义,例如:

INSERT INTO payment 
    (work_id, task_id, `before`, `after`, before_after, milestone, min, max, hourly_rate) 
    VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)

在symfony中,类似:

<?php
/** @Column(name="`before`", type="integer") */
private $before;
/** @Column(name="`after`", type="integer") */
private $after;

更好的选择是将列简单地重命名为其他名称。