Перенос данных из базы данных в текстовый файл

#php #mysqli

#php #mysqli

Вопрос:

У меня есть текстовый файл, который содержит, например :

 The Fulton County Grand Jury said Friday an investigation.
The jury further said in term-end presentments that the City Executive Committee.
etc..
  

Например, у меня есть таблица словаря слов в базе данных :

 ==========================
= id =    word  =  type  =
==========================
= 1  =  country = nn-tl  =
= etc...                 =
==========================
  

Я должен искать те же слова в моем текстовом файле со словами в словаре в базе данных и принимать тип тех же слов, а затем добавлять их тип в мой текстовый файл с форматом words/type , поэтому конечный результат должен быть :

 The/at Fulton/np-tl County/nn-tl Grand/jj-tl Jury/nn-tl said/vbd Friday/nr an/at investigation/nn ./.
etc..
  

вот код :
connection.php

 $db = new mysqli("localhost","root","root","peri");
if(mysqli_connect_errno()){
   trigger_error('Connection failed: '.$db->error);
}
  

основная программа :

 require_once 'connection.php';
$file  = "C:/AppServ/www/dictionary/text.txt";
$lines = file($file);
foreach($lines as $line_num => $line) {
     $parse = explode(' ', $line);  
     $query = $db->query("SELECT typeword FROM dictionary WHERE words = $parse");
     $result = $query->fetch_object();
      echo $parse '/' $result";
}
  

но это выдает мне сообщение об ошибке Call to a member function fetch_object() on a non-object
пожалуйста, помогите мне, спасибо 🙂

Комментарии:

1. Попробуйте ("SELECT typeword FROM dictionary WHERE words = '".$parse."'")

2. Здесь у вас есть синтаксис в echo $parse '/' $result";

3. $parse — это массив, он все равно будет работать?

4. @nevermind нет, это не работает. как заставить это работать?

5. @user3714179, каждое слово из текстового файла находится внутри таблицы «словарь», имеет ли оно свой тип? Если не найдено — что должно быть напечатано? P.S. Слово в словаре в точно такой же форме, например, ‘The’ — верхний регистр?

Ответ №1:

Предполагая, что у вас есть таблица словаря с полями: id, word, type и ваш пример текстового файла, это может быть решением (возможно, вам понадобится несколько настроек здесь и там!):

 $file  = "text.txt";



$lines = file($file);
foreach($lines as  $line) {
     $parse = explode(' ', $line);
     foreach ($parse as $word) {  

     //replace dot in last word in line
     $word_fix=str_replace('.','',$word);

     $query ="SELECT type FROM dictionary WHERE word = '$word_fix'";
     $result = $db->query($query);
   if($res = $result->fetch_object()) {

       echo $word.'/'.$res->type.' ';
   }

   else {
         echo $word.' /'.' ';
   }
     }
}
  

PS вероятно, вам нужно заменить: ,!? … сопоставить слово из базы данных…