G3/SG1
25.10.2009 - 13:56
Суть такова. Есть форма, в которую загружается текстовый файл с SQL-запросами. Эти запросы поочередно выполняются. Но почему-то каждый раз выводится ошибка "Query was empty", но запросы при этом выполняются м данные записываются в базу. Как это исправить и в чем тут может быть причина этого? Вот код скрипта:
PHP |
<h3>Импорт записей</h2> <?php if(isset($_POST['submit'])){
if($_FILES['export']['type']!="text/plain"){ echo "<h4>Импортируемый файл должен быть в формате txt!</h4><br />"; }else{ $exported = split(";\r\n", file_get_contents($_FILES['export']['tmp_name'])); $all = sizeof($exported);
for($a=0; $a<$all; $a++){ $query = mysql_query($exported[$a]); echo mysql_error()."<br />"; } }
}
?> <form enctype="multipart/form-data" method="post"> <input type="file" name="export" /& |
Вот вроде знаю, что делать SQL-запросы в цикле for смертному греху подобно, но как по-другому тогда делать? Может есть какие-то альтернативные варианты?
Спустя 2 часа, 41 минута, 41 секунда (25.10.2009 - 15:38) Michael написал(а):
Видимо где то в начале в массив пустая строка попадает
Выведи массив после формировки и посмотри, что в нем:
PHP |
echo '<pre>'; print_r($exported); echo '</pre>'; |
Также замени:
PHP |
echo mysql_error()."<br />"; |
на:
PHP |
if (!$query) echo mysql_error()."<br />"; |
Спустя 17 минут, 12 секунд (25.10.2009 - 15:55) G3/SG1 написал(а):
Michael, большое спасибо!!
Там в конце массива перевод строки попадал, я прописал в коде array_pop($exported), теперь все работает отлично.
А
PHP |
echo mysql_error().'<br />'; |
- это для отладки было, сейчас уже заменил на предложенный вариант.
Спустя 9 месяцев, 29 дней, 21 час, 46 минут, 6 секунд (25.08.2010 - 12:41) Guest написал(а):
Спустя 2 минуты, 32 секунды (25.08.2010 - 12:43) linker написал(а):
split() ныне в деприкейте, используйте preg_split() или explode(). Просто на всякий случай, чтоб знали на будущее.
Спустя 6 минут, 19 секунд (25.08.2010 - 12:50) twin написал(а):
Еще есть такая функция, как rtrim()
Спустя 5 минут, 58 секунд (25.08.2010 - 12:56) linker написал(а):