Ekle PHP ile Satır Grupları &

3 Cevap php

Ben bir veritabanına birkaç yüz metin dosyalarından veri yüklemek için çalışıyorum.

Ben MYSQL tüm satırları takmadan döngünün dışına çıkmadan inanıyoruz.

Herkes PHP kodu ile veri sonuna kadar 1000 satır blokları eklemek nasıl önerebilirsiniz?

$filenames_array = array();

foreach($filenames_array as $filename)
{

        $file_array 	= file($filename);
        $file_value 	= $file_array[0];
        $new_array 	= explode(",", $file_value);
        $length         = count($new_array);


        for($i = 0; $i < $length; $i++)
        {

        $sql = "INSERT INTO `names`
        	(`id`, `name`)	 

        	VALUES 
        	('',
        	'" . $new_array[$i] . "'
        	)";

        $result = mysql_query($sql) or die(mysql_error());
        echo $i . 'Row Inserted<br />';
        }

    }

3 Cevap

muhtemelen tek bir sorguda çok INSERT deyimlerini çalıştırmak için çalışıyoruz.

PDO ve hazırlanmış tablolara içine bakmak ya da bunun gibi bir SQL sözdizimini kullanın:

INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);

Bunu eklemek için çalışıyoruz girdilerden biri tek tırnak 'içerdiğini mümkün mü? Bu durumda, bir hata oluşacak ve döngü bitirmek olmaz.

Her zaman böyle sorunları önlemek için mysql_real_escape_string ile veritabanına eklemek değerleri kaçmak gerekir ve emin sql injection savunmasız değiliz yapmak.

    $sql = "INSERT INTO `names`
            (`id`, `name`)   

            VALUES 
            ('',
            '" . mysql_real_escape_string($new_array[$i]) . "'
            )";

Neden büyük bir metin dosyası içine her txt dosya birleştirmek değil, ve satır satır okudun mu? Burada örneklere bakın http://php.net/manual/en/function.fgets.php

Ağırlıklı olarak:

<?php
$handle = @fopen("/tmp/inputfile.txt", "r");
if ($handle) {
    while (!feof($handle)) {
        $buffer = fgets($handle, 4096);
        echo $buffer;
    }
    fclose($handle);
}
?>