我遇到了这个问题,我想出了一种方法来上传.xls格式的数据并在mysql上输入正确的信息。我正在使用phpmyadmin和php上传文件,但是现在我在主键上遇到了麻烦...对不起,我是一个新的编程槽php,而且我不知道为什么,一旦我定义了主键并脚本向数据发送主键不会尊重的数据,并且不将相同的id(primarykey)分配给相同的值,例如:
我输入数据的代码如下:
<?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;