Mam pytanie odnosnie takiego skryptu, ktory chcialem napisac do wrzucenia danych do bazy z pliku. Skrypt wyglada tak:
<?php
ini_set('max_execution_time', 6000
);
include_once('data_konf.php');
if($_POST['wykonaj']){
$polaczenie=@mysql_connect($host_name,$user_name,$password) or
die ('Nie połączony'); //Polaczenie z serwerem MySQL
$path=$_POST['path'];
if(!empty($path)&&is_dir
($path)){
$path.='/';
$pom=mysql_query('show tables'); //Pobranie nazw wszystkich tabel z bazy
if((!empty($_POST['tabela'])&&$table[0
]==$_POST['tabela'])||empty
($_POST['tabela'])){
if(is_file($path.$table[0].".txt")){
mysql_query('lock table '.$table[0
]); //Zablokowanie tabeli
mysql_query('truncate '.$table[0
]); //Wyczyszczenie tabeli
}
$tablica=file($path.$table[0].".txt");
foreach ($tablica as $linia){
$insert='insert into '.$table[0].' values(';
for($i=0; $i<$licznik; $i++){
$komorka[$i]=trim($komorka[$i]);
if($i==0){
$insert.="'$komorka[$i]'";
}
else{
$insert.=",'$komorka[$i]'";
}
}
$insert.=')';
mysql_query($insert); //Zapis pojedynczego wiersza do tabeli
}
mysql_query('unlock table '.$table[0
]); //Odblokowanie tabeli
//mysql_query("load data local infile '".$path.$table[0].".txt' into table ".$table[0]); //Zrzut danych z pliku do tabeli
echo 'Tabela: '.$table[0].' - dane zaimportowane<br>';
}
else{
echo '<strong>Plik: '.$path.$table[0].".txt".' nie istnieje!!!</strong><br>';
}
}
}
}
else{
echo '<center>Taki katalog nie istnieje!!!</center> <a href="load_data.php">Spróbuj ponownie</a></center>';
}
}
else{
?>
<form action="load_data.php" method="post">
<center><strong>Podaj nazwe katalogu:</strong>
<input type="text" name="path"><br>
<strong>Podaj nazwe tabeli:</strong>
<input type="text" name="tabela"><br>
<input type="submit" name="wykonaj" value="Wykonaj load">
</center>
</form>
<?php
}
A Pytanie jest takie: dlaczego skrypt nie wyrzucajac zadnego bledu (po dlugiej chwili pracy) przechodzi do strony "nie mozna znalezc strony" jest tam linijka w komentarzu z load data infile - i load dziala poprawnie a ten skrypt z insertem sie wywala.
I jeszcze takie pytanie bardziej z SQL-a: potrzebowalem przerobic ten skrypt na insert dlatego, ze load data infile nie wpisywal mi poprawnie do bazy pol z autoincrement tzn. jezeli bylo pole z autoincrement ale zdazylo sie ze np. wartosci w tym polu nie zaczynaly sie od 1 to load wpisywal dane ale to pole bylo wypelniane przez autoincrement a nie przez dane pobrane z pliku - pytanie czy da sie to jakos obejsc, zeby podstawial dane z pliku?

Pozdro
Ten post edytował brachu 19.01.2006, 12:16:07