[MySQL]Zapis z CSV do MySQL


(Grzesie K) #1
<?php

include('core.php');

$time=time();

$lines = gzfile('http://'.$CFG['tw']['server'].'/map/player.txt.gz');

if(!is_array($lines)) die("Nie można było otworzyć pliku");

foreach($lines as $line) {

	list($id, $name, $ally, $villages, $points, $rank) = explode(',', $line);

		$name = urldecode($name);

		$name = addslashes($name);

		$sql='INSERT INTO `players` (`id`, `time`, `name`, `villages`, `points`, `rank`) VALUES'." ($id, $time, $name, $villages, $points, $rank)";

		mysql_query($sql);

}

mysql_close($sql_conn);

?>

plik core.php zawiera dane konfiguracyjne w tablicy $CFG oraz łączy się i wybiera bazę. Problem jest w tym, iż dane się nie zapisują.... co jest źle?


(ra-v) #2

Pytanie czy w ogóle czyta plik po URLu we funkcji gzfile();

Zrób:

var_dump(gzfile('http://'.$CFG['tw']['server'].'/map/player.txt.gz'))

Druga sprawa czy nie powinno być

$sql='INSERT INTO `players` (`id`, `time`, `name`, `villages`, `points`, `rank`) VALUES'." ($id, \'$time\', \'$name\', \'$villages\', $points, $rank)";

? Tam gdzie string muszą być apostrofy. Można to sprawdzić czy się wstawia zmieniając linię na

mysql_query($sql) or die(mysql_error());

(Grzesie K) #3

mysql_error() zwraca User 'a4436597_itw' has exceeded the 'max_questions' resource (current value: 100000) Czyli już wiem.... limity :frowning:


(ra-v) #4

Ale coś mi tu nie gra - 100tys. zapytań to dużo - masz duży ruch? Czy skrypt generuje tak duży ruch?

Jeśli tak to spróbuj ograniczyć ilość zapytań (połączenia, podzapytania). Wiem że to czasem nie możliwe ale to już sam musisz stwierdzić.


(Grzesie K) #5

W csv było bardzo dużo danych, dodałem if i filtrowanie danych- działa.