Управление данными сопоставления Symfony - PullRequest
0 голосов
/ 19 ноября 2018

Я работаю над проектом по отображению данных. Реализовано несколько проверок:

  • хорошо импортированный файл

  • выбор стола

  • столбцы выбора таблицы

  • тип данных

Я нахожусь на части типа данных на данный момент. Я храню эти различные данные в массиве. Проблема в том, что я не знаю точно, как определить количество столбцов, выбранных для хранения данных в базе данных. Я использую Symfony. Я получаю эту ошибку при попытке сохранить данные:

SQLSTATE [21S01]: список значений вставки не соответствует списку столбцов: 1136 Количество столбцов не соответствует значению в строке 1

/**
 * @Route("/result/", name="result")
 * @param Request $request
 */
function resultAction(Request $request)
{
    $session = $request->getSession();

    $choiceMapping = $session->get('choiceMapping');
    $tableChoice = $session->get('tableChoice');
    $selectChoiceFields = implode(",", $session->get('selectChoiceFields')); 
    $choiceData = $session->get('choiceData');
    var_dump($choiceData);

    $config = new Configuration();

    $connectionParams = array(
        'dbname' => 'mapping',
        'user' => 'root',
        'password' => '',
        'host' => '127.0.0.1',
        'driver' => 'pdo_mysql',
    );

    $conn = DriverManager::getConnection($connectionParams, $config);

    $sm = $conn->getSchemaManager();

    $tableDetails = $sm->listTableColumns($session->get('tableChoice'));

    if(sizeof($selectChoiceFields[0]) === 0)
    {
        $addFlash = $this->addFlash('danger', 'Please choose at least one field !');
        return $this->redirectToRoute('mapping');
    }

    $host = '127.0.0.1';
    $db = 'JAgestionDonnees';
    $user = 'root';
    $pass = '';
    $charset = 'utf8';

    $dsn = "mysql:host=$host;dbname=$db;charset=$charset";
    $opt = [
            PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
            PDO::ATTR_EMULATE_PREPARES   => false,
            ];

    try
    {
        $cnx = new PDO($dsn, $user, $pass, $opt);
    }
    catch(PDOException $e)
    {
        die('Connection failed :'. $e->getMessage());
    }

if($choiceMapping === "completion")
{
        //$values = str_replace(",", ' UNION SELECT ', $choiceData);
        $content = $cnx->prepare('INSERT INTO '.$session->get('tableChoice').' ('.$selectChoiceFields.') VALUES ('.$choiceData.')');    
        $addFlash = $this->addFlash('success', "record completed !");
    }
}
else
{
    $content = $cnx->prepare('Truncate '.$session->get('tableChoice'));
    $content->execute();

    $sql = $cnx->prepare('INSERT INTO '.$session->get('tableChoice').' ('.$selectChoiceFields.') VALUES (:choiceData)');
    $sql->bindValue(':choiceData', $choiceData[0]);
    $sql->execute();

    $addFlash = $this->addFlash('success', "record completed !");
}

    return $this->render('result.html.twig');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...