首页 > 解决方案 > 如何从准备好的国家名称、数据库列表中搜索文本文件,然后用 id 替换这些国家?

问题描述

我有两张桌子国家和城市

CREATE TABLE IF NOT EXISTS `country` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `name` varchar(200) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=29 ;


CREATE TABLE IF NOT EXISTS `cities` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `bid` int(10) NOT NULL,
  `name` varchar(100) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=19 ;

还有一个带有国家和城市的文本文件,

file.txt
country1;city1;num1;num2
country1;city2;num1;num2
country1;city3;num1;num2
country1;city4;num1;num2
country1;city5;num1;num2
country2;city1;num1;num2
country2;city2;num1;num2
country2;city3;num1;num2
country2;city4;num1;num2
country2;city5;num1;num2
country3;city1;num1;num2
country3;city2;num1;num2
country3;city3;num1;num2
country3;city4;num1;num2
country3;city5;num1;num2
country4;city1;num1;num2
country4;city2;num1;num2
country4;city3;num1;num2
country4;city4;num1;num2
country4;city5;num1;num2
country5;city1;num1;num2
country5;city2;num1;num2
country5;city3;num1;num2
country5;city4;num1;num2
country5;city5;num1;num2
country6;city1;num1;num2
country7;city1;num1;num2

我的目标是提取国家并将它们保存在数据库中,这样它们就不会重复,然后从数据库中获取 id 并打开一个包含国家和城市的文本文件。创建一个条件,从数据库中搜索文本文档中的国家,找到国家并替换为 id,然后与“id”一起保存到城市数据库中。怎么做?我开始了,我设法将添加的国家/地区的 ID 提取到数据库中。这是我的代码:

<?php
 require_once 'db.php';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru">
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<meta name="description" content="" />
<meta name="keywords" content="" />
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
</head>
<body> 
<?php
$cities = array();
$handle = fopen("file.txt", "r");
$rows = fopen("file.txt", "r");
if ($handle) {
    while (($buffer = fgets($handle, 4096)) !== false) {
        $sql = explode(";",htmlentities($buffer, ENT_QUOTES, 'utf-8'));

        if (!in_array($sql[0], $cities)) {
             array_push($cities, $sql[0]);
             $rows = array_unique($cities);


        }
    }
}

for($i = 0; $i < count($rows); $i++)
{
              try{
                $query = "INSERT INTO country
                  (name) 
                  VALUES (:name)";
                  $data = array(':name'=>$rows[$i]);
                  $statement = $pdo->prepare($query);
                  $statement->execute($data);
              }
              catch(PDOException $e){
                  throw new Exception($e -> getMessage() . "  " . get_class($this).' -> '.__METHOD__);
                  $file = "exceptionlog.txt";
                  file_put_contents($file, $e -> getMessage(), FILE_APPEND);
              } 
}
$position_id = $pdo->LastInsertId();
$stmt = $pdo->query("SELECT * FROM country");
$data = $stmt->fetchAll();
foreach($data as $values)
{
  echo $values[name]."<br>";
}
?>
</body>
</html>

标签: phpmysql

解决方案


推荐阅读