import af csv til mysql

Tags:    php csv mysql

<< < 12 > >>
Jeg skal indlæse en csv fil i Mysql via PHP.

Tablen "test" indeholder 3 felter: id,navn,email
idfeltet er = telefonnr.

Selve cvs filen bliver oploadet i en mappe via ftp.

ideen er at kalde "index.php" som ligger i samme mappe som csv'en.

Men jeg kan ikke få det til at virke.

Min kode ser sådan ud:
<?php

// Set Mysql Variables
$host = 'localhost';
$user = 'user';
$pass = 'pass';
$db = 'mindb';
$table = 'test';


$row = 1;
if (($handle = fopen("Nye_navne.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
echo "<p> $num fields in line $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\n";
}
}
fclose($handle);
}


?>

Jeg får dette output på skærmen:
1 fields in line 1:

1;Tom;mail1;,
1 fields in line 2:

2; ole;mail2;,
men intet i db'en

Hvor går det galt.



12 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 9 karma
Sorter efter stemmer Sorter efter dato
Nye_navne.csv er prøvet både som din og med ; i stedet for ,
Dog har jeg ændret id tallet for at se om de rigtige tal kom med over og det gør de

sql Dump:
-- phpMyAdmin SQL Dump
-- version 4.1.14.1
-- http://www.phpmyadmin.net
--
-- Vært: mysqxxxx.dk
-- Genereringstid: 31. 10 2014 kl. 14:30:01
-- Serverversion: 5.1.73-1-log
-- PHP-version: 5.3.3-7+squeeze21

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Database: `mindb`
--

-- --------------------------------------------------------

--
-- Struktur-dump for tabellen `test`
--

CREATE TABLE IF NOT EXISTS `test` (
`id` int(10) NOT NULL,
`navn` varchar(50) COLLATE utf8_danish_ci NOT NULL,
`mail` varchar(50) COLLATE utf8_danish_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_danish_ci;

--
-- Data dump for tabellen `test`
--

INSERT INTO `test` (`id`, `navn`, `mail`) VALUES
(33, '', ''),
(23, '', ''),
(55, '', '');

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

vh. Rene




Du er en GUD, Ronny.
Nu virker det :bounce::bounce::bounce:

Mange tak for hjælpen.

vh. Rene



<< < 12 > >>
t