Невозможно вставить данные с помощью Doctrine2 DBAL \ Connection в Symfony 4 - PullRequest
0 голосов
/ 06 ноября 2018

Я пытаюсь вставить некоторые данные в таблицу MySQL с помощью Doctrine2 DBAL \ Connection ( для таблиц, которые я не хочу отображать ), с помощью этого кода:

<?php

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use Doctrine\DBAL\Connection;

class UtilsController extends AbstractController
{
    /**
     * @Route("/utils/fixer", name="utils_fixer")
     */
    public function dataFixer(Connection $conn)
    {
        $sql = "INSERT INTO test(id, username) VALUES (':id', ':name')";

        $id = 456;
        $name = 'blabla';

        $res = $conn->executeUpdate($sql, ['id' => $id, 'name' => $name]);

        return $this->render('utils/index.html.twig', ['res' => $res]);
    }
}

Вот как выглядит мой стол:

enter image description here

Это дает мне следующее: «SQLSTATE [HY000]: общая ошибка: 1366 Неверное целочисленное значение:«: id »для столбца« id »в строке 1».

Поле Id не имеет автоматического приращения , это просто тестовая таблица.

Оператор SELECT возвращает данные в порядке.

Привязка значений не работает ??

Я использовал эту доктрину Документация .

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

Заполнители не должны быть указаны.

По крайней мере, это дает пример использования метода executeUpdate () .

public function dataFixer(Connection $conn)
{
    $sql = "INSERT INTO test(id, username) VALUES (:id, :name)";

    $id = 456;
    $name = 'blabla';

    $res = $conn->executeUpdate($sql, ['id' => $id, 'name' => $name]);

    return $this->render('utils/index.html.twig', ['res' => $res]);
}
0 голосов
/ 06 ноября 2018

Вы не должны вставлять значение $ id, если это значение автоинкрементно - как мне кажется.

...