Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Запись данных из файла в БД
Форумы портала PHP.SU » » Работа с СУБД » Запись данных из файла в БД

Страниц (1): [1]
 

1. n1k86 - 25 Октября, 2011 - 17:06:27 - перейти к сообщению
Ребят. Делаю фильтр мата и запоролся на одном моменте. У меня очень большой список матов и хочу всё добавить в таблицу. Все они в файле и разделены запятой. Я считываю их, и заношу в массив разделяя запятой всё.

PHP:
скопировать код в буфер обмена
  1.  
  2. $spisok = file_get_contents('mati.txt'); //Открываю файл и считываю всё.
  3. $mati = explode(",",$spisok); //Принимаю запятую, как разделитель и загоняю в массив.
  4.  


В общем, всё хорошо, но как мне дальше поочереди заносить каждое слово в БД не могу сообразить. Подскажите, пожалуйста.
2. Stasnislav - 25 Октября, 2011 - 17:12:32 - перейти к сообщению
Циклом, например foreach.
3. n1k86 - 25 Октября, 2011 - 17:13:36 - перейти к сообщению
Это понятно. Как мне сказать ему, чтобы он брал каждое значение из цикла подряд и т.д.
(Добавление)
точнее из массива.
4. Stasnislav - 25 Октября, 2011 - 17:16:57 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. foreach ($mati as $mat) {
  3.    //заносишь в базу
  4. }
  5.  
5. n1k86 - 25 Октября, 2011 - 17:17:54 - перейти к сообщению
Ага, спс) Сейчас попробуемс)))) Я кстати пробовал так делать, но не добавляло..может ошибся где-то я...
6. EuGen - 25 Октября, 2011 - 17:18:27 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. //connect to DB first..
  2. $text=file_get_contents('mati.txt');
  3. $rgWords=explode(',',$text);
  4. $sql='INSERT INTO `table` (`word`) VALUES '.join(',', array_map(function($w)
  5. {
  6.    return '("'.mysql_real_escape_string($w).'")';
  7. }, $rgWords));

PHP>=5.3
7. n1k86 - 25 Октября, 2011 - 17:29:11 - перейти к сообщению
Евген, твой код не работает.
Станислав, ну делаю получилось вот так:

PHP:
скопировать код в буфер обмена
  1.  
  2. $spisok = file_get_contents('mati.txt'); //Открываю файл и считываю всё.
  3. $mati = explode(",",$spisok); //Принимаю запятую, как разделитель и загоняю в массив.
  4. foreach ($mati as $mat) {
  5. if (mysql_query("INSERT INTO `antimat` (`mat`) VALUES ('сюда что нужно написать?')"))
  6. {
  7. echo "Успешно добавил!";
  8. }
  9.  


Так что туда нужно написать то я не могу понять. До этого момента то я доходил)))
(Добавление)
блин...забыл тег закрыть....5 сек...
8. Stasnislav - 25 Октября, 2011 - 17:31:44 - перейти к сообщению
n1k86 пишет:
Так что туда нужно написать то я не могу понять.

$mat
9. n1k86 - 25 Октября, 2011 - 17:32:57 - перейти к сообщению
всё, сработало всё. Если что - вот рабочий код.

PHP:
скопировать код в буфер обмена
  1.  
  2. $spisok = file_get_contents('mati.txt'); //Открываю файл и считываю всё.
  3. $mati = explode(",",$spisok); //Принимаю запятую, как разделитель и загоняю в массив.
  4. foreach ($mati as $mat)
  5. {
  6. mysql_query("INSERT INTO `antimat` (`mat`) VALUES ('$mat')")
  7. }
  8.  
  9.  

(Добавление)
так, ребят. он $mat[0] не записал. Почему собственно? Сказано было все записывать ему. Почему он его пропускает?
10. EuGen - 25 Октября, 2011 - 17:34:45 - перейти к сообщению
Значит, php версии ниже. Пример
PHP:
скопировать код в буфер обмена
  1. $text='w0,w1,w2,w3,w4';
  2. $rgWords=explode(',',$text);
  3. $sql='INSERT INTO `table` (`word`) VALUES '.join(',', array_map(function($w)
  4. {
  5.    return '("'.addslashes($w).'")';
  6. }, $rgWords));
  7. var_dump($sql);

- чтение не из файла + без соединения к БД, так что mysql_* опущено, результат:
PHP:
скопировать код в буфер обмена
  1. string(70) "INSERT INTO `table` (`word`) VALUES ("w0"),("w1"),("w2"),("w3"),("w4")"

- вполне рабочий запрос.
11. n1k86 - 25 Октября, 2011 - 17:36:29 - перейти к сообщению
так, ребят. он $mat[0] не записал. Почему собственно? Сказано было все записывать ему. Почему он его пропускает?
(Добавление)
а нет, извиняюсь. Все было добавлено. Просто косячно отобразил phpmyadmin строки. Сорри. Спасибо ребят!

 

Powered by ExBB FM 1.0 RC1