Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Из файла вставить в БД
 
 автор: Dizels   (26.01.2010 в 19:07)   письмо автору
 
 

есть текстовый файл:
name1
name2
name3
...

Нужно вставить в таблицу БД, где есть 2 поля:
id
name

т.е. чтобы id само проставлялось, а name соответственно брался из этого файла по порядку.

Подскажите, как такое реализовать?

  Ответить  
 
 автор: Trianon   (26.01.2010 в 19:22)   письмо автору
 
   для: Dizels   (26.01.2010 в 19:07)
 

чтение строк из файла - fgets() или file() - на вкус.
Добавлять записи в таблицу БД Вы умеете. В том числе и с автоинкрементом.
В чем сложность?

  Ответить  
 
 автор: Alexey_Tihonenko   (27.01.2010 в 09:50)   письмо автору
 
   для: Dizels   (26.01.2010 в 19:07)
 

Код, создающий необходимую таблицу:

CREATE TABLE name (
id INT(11) NOT NULL AUTO_INCREMENT,
name TINYTEXT,
PRIMARY KEY (id)
);


Код php-скрипта:

<?php
  
//Устанавливаем соединение с MySQL сервером
  
if(!mysql_connect("localhost""root""")) exit("MySQL Сервер недоступен");
  
  
//Выбираем нужную базу данных
  
if(!mysql_select_db("test")) exit("База данных не может быть выбрана");
  
  
//Устанавливаем кодировку, в которой MySQL сервер будет принимать данные
  
mysql_query("SET NAMES 'cp1251'");
  
  
//Открываем файл text.txt в режиме чтения
  
$fd fopen("text.txt""r");
  
  
//За одну итерацию считываем одну строку файла и помещаем ее в БД
  //Выходим из цикла при достижении конца файла(после считывания последней строки)
  
while(!feof($fd))
  {
    
$str fgets($fd10000);
    
$query "INSERT INTO name VALUES(NULL, \"$str\")";
    
mysql_query($query);
  }
  
  
//Закрываем файл
  
fclose($fd);
?>

  Ответить  
 
 автор: buldovsky   (27.01.2010 в 10:07)   письмо автору
 
   для: Alexey_Tihonenko   (27.01.2010 в 09:50)
 

Сколько кавычек может встретится в файле? А SQL-инъекций?

  Ответить  
 
 автор: GeorgeIV   (27.01.2010 в 10:19)   письмо автору
 
   для: buldovsky   (27.01.2010 в 10:07)
 

в задаче этого не стояло, не надо додумывать.
Файл может быть и собственного приготовления.

  Ответить  
 
 автор: buldovsky   (27.01.2010 в 10:33)   письмо автору
 
   для: GeorgeIV   (27.01.2010 в 10:19)
 

Додумывать откуда этот файл появился, как раз и не надо!
А думать головой - желательно.
В задаче было "занести данные в базу".
В ответе был приведен полный код (включая даже подключение к базе и выбор кодировки), а элементарная кавычка которая может быть в любом названии или имени или наименовании (именно так name переводится) не фильтруется.

  Ответить  
 
 автор: Alexey_Tihonenko   (27.01.2010 в 10:32)   письмо автору
 
   для: buldovsky   (27.01.2010 в 10:07)
 

Я так понял, что человек вообще не знает как осуществить операцию "перекидывания" данных из файла в БД, поэтому привел самый простой пример, который осуществит эту операцию. Тонкости специально опустил, чтобы не запутать автора темы.

  Ответить  
 
 автор: psychomc   (27.01.2010 в 10:41)   письмо автору
 
   для: Alexey_Tihonenko   (27.01.2010 в 09:50)
 

грамотнее было бы всё это сделать одним запросом

  Ответить  
 
 автор: Alexey_Tihonenko   (27.01.2010 в 11:00)   письмо автору
 
   для: psychomc   (27.01.2010 в 10:41)
 

Может быть)
Почему?
Объясните пожалуйста.

  Ответить  
 
 автор: psychomc   (27.01.2010 в 15:42)   письмо автору
 
   для: Alexey_Tihonenko   (27.01.2010 в 11:00)
 

нагрузка меньше на бд
если в цикле хотя бы 20 итераций, то мне кажется 20 запросов существенно более ресурсоёмко чем 1 запрос

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования