簡體   English   中英

嘗試將數據插入MySQL時出錯

[英]Error when trying to insert data to MySQL

我正在使用以下方法將數據添加到數據庫:

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付款(work_id,task_id,之前,之后,before_after,里程碑,最小,最大,hourly_rate)值(?,?,?,?,?,?,?,?,?)”時發生異常參數[null,null,1、0、0,null,null,null,null]:

SQLSTATE [42000]:語法錯誤或訪問沖突:1064 SQL語法有錯誤; 檢查與您的MariaDB服務器版本相對應的手冊以獲取正確的語法以在第1行的'before,before,after_after,里程碑,min,max,hourly_rate附近使用VALUES(NULL,NUL)

這是我的表格的樣子:

在此處輸入圖片說明

我只想將值添加到beforeafterbefore_after列中。 因此,我認為不必將值插入其他列,因為默認值應為NULL

我究竟做錯了什么?

在MySQL中, beforeafter保留字

您將需要使用反引號在查詢中對其進行轉義,例如:

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;

更好的選擇是簡單地將列重命名為其他名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM