Вставка групп строк с помощью PHP и MYSQL - PullRequest
0 голосов
/ 28 ноября 2009

Я пытаюсь загрузить данные из нескольких сотен текстовых файлов в базу данных.

Я считаю, что MYSQL выходит из цикла, не вставляя все строки.

Кто-нибудь может подсказать, как вставить блоки из 1000 строк в конец данных с помощью PHP-кода?

$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 ]

0 голосов
/ 28 ноября 2009

Возможно ли, что одна из записей, которые вы пытаетесь вставить, содержит одну кавычку '? В этом случае произойдет ошибка, и цикл не завершится.

Вы всегда должны экранировать значения, которые вы вставляете в базу данных с помощью mysql_real_escape_string, чтобы предотвратить подобные проблемы и убедиться, что вы не уязвимы для sql внедрения .

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

            VALUES 
            ('',
            '" . mysql_real_escape_string($new_array[$i]) . "'
            )";
0 голосов
/ 07 декабря 2009

Почему бы не объединить каждый текстовый файл в один большой текстовый файл и прочитать его построчно? Смотрите примеры здесь http://php.net/manual/en/function.fgets.php

Главным образом:

<?php
$handle = @fopen("/tmp/inputfile.txt", "r");
if ($handle) {
    while (!feof($handle)) {
        $buffer = fgets($handle, 4096);
        echo $buffer;
    }
    fclose($handle);
}
?>
0 голосов
/ 28 ноября 2009

вы, вероятно, пытаетесь выполнить слишком много операторов INSERT в одном запросе.

посмотрите PDO и подготовленные операторы или используйте синтаксис SQL, например:

INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...