Массивная загрузка информации Excel в MySQL через первичные ключи php

У меня возникла эта проблема. Я нашел способ загрузить свои данные в формате .xls и ввести правильную информацию в mysql. Я использую phpmyadmin и php для загрузки файла, но прямо сейчас у меня проблемы с первичными ключами ... извините, я вроде как новое программирование через php, и я не знаю почему, как только я определю свой первичный ключ и сценарий отправляет данные, которые первичный ключ не уважает, и не назначает один и тот же идентификатор (первичный ключ) одному и тому же значению, например:

Массивная загрузка информации Excel в MySQL через первичные ключи php

и мой код для ввода данных выглядит следующим образом:

<?php 
require_once 'db_con.php';
if (isset($_POST["submit_file"]))
{ 
    $file = $_FILES["file"]["tmp_name"];
    $file_open = fopen($file,"r");
    while(($csv = fgetcsv($file_open, 1000, ",")) !== false) 
    {
         $fecha= $csv[0]; 
         $tipo = $csv[1]; 
         $impresion = $csv[2]; 
         $hojas= $csv[3]; 
         $cadena_nombre = explode('(', $csv[4]);
         $usuario =$cadena_nombre [0];
         $usuario =$csv[4];
         $stmt = $DBcon->prepare("INSERT INTO trabajo 
                                    (fecha,tipo,impresion,hojas,usuario) 
                            VALUES(:fecha,:tipo,:impresion,:hojas,:usuario)");

        $stmt->bindparam (':fecha', $fecha);
        $stmt->bindparam(':tipo', $tipo);
        $stmt->bindparam(':impresion', $impresion);
        $stmt->bindparam(':hojas', $hojas);
        $stmt->bindparam(':usuario', $usuario);

        $stmt->execute();
    }
}

echo "CSV Imported Successfully";
?>

Мой DDL выглядит так:

CREATE TABLE `trabajo` (
  `fecha` date NOT NULL,
  `hojas` int(25) NOT NULL,
  `impresion` int(25) NOT NULL,
  `tipo` varchar(60) NOT NULL,
  `usuario` varchar(60) NOT NULL,
  `usuario_id` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE `trabajo`
  ADD PRIMARY KEY (`usuario_id`);

--
-- AUTO_INCREMENT de las tablas volcadas
--

--
-- AUTO_INCREMENT de la tabla `trabajo`
--
ALTER TABLE `trabajo`
  MODIFY `usuario_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=12592;
COMMIT;

Взгляните на документацию для LOAD DATA INFILE

Hackerman 05.07.2018 19:28

Вы получаете как $cadena_nombre, так и $usuario_id от $csv[4]. Это неверно. Это?

RiggsFolly 05.07.2018 19:36

@RiggsFolly right Я разместил неправильный код, но все же .... я не получаю первичные ключи

MewkOna 05.07.2018 19:37

Так что было бы хорошо увидеть правильный код,

RiggsFolly 05.07.2018 19:38

@RiggsFolly done only usuario_id был неправильным

MewkOna 05.07.2018 19:40

Теперь $cadena_nombre = explode('(', $csv[4]); $usuario =$cadena_nombre [0]; $usuario =$csv[4]; Или мне что-то здесь не хватает

RiggsFolly 05.07.2018 19:42

@RiggsFolly, да, это кажется правильным, но я только хочу знать, есть ли способ указать php для вставки тех же данных в уникальный идентификатор, есть много регистров, и я должен использовать PK для связи таблиц

MewkOna 05.07.2018 19:46

Так является ли usario_id столбцом автоинкремента?

RiggsFolly 05.07.2018 19:47

@MewkOna показывает DDL для ваших таблиц, чтобы мы могли понять, что вы подразумеваете под первичными ключами? Кроме того, поскольку вы используете bindParam, вы можете выбросить подготовку и привязку за пределами цикла (после того, как вы очистили свою ключевую проблему)

YvesLeBorg 05.07.2018 19:48

мой DDL выглядит так, я ненавижу обновил свой пост:

MewkOna 05.07.2018 21:37

@RiggsFolly да usuario_id - это автоинкремент, и действительно, он отправляет первичные ключи, но, как вы можете видеть, USER_ID многократно повторяет значения и не присваивает уникальные значения

MewkOna 05.07.2018 21:46

Похоже, ваша таблица - это список заданий на печать или что-то в этом роде, где каждый пользователь может быть указан более одного раза. Таким образом, присвоение уникального идентификатора пользователя строкам в этой таблице (вместо уникального идентификатора задания на печать) кажется неправильным, поскольку один и тот же пользователь может отправить задание печати 1 и задание печати 4.

James 06.07.2018 03:10

@James Мне было интересно, могу ли я рассматривать каждый идентификатор пользователя как первичный ключ вместо того, чтобы назначать первичный ключ каждого регистра для выполнения запросов.

MewkOna 06.07.2018 16:39
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
13
37
0

Другие вопросы по теме