php - 如何从准备好的国家名称、数据库列表中搜索文本文件,然后用 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>
解决方案
推荐阅读
- bash - 您将如何遍历目录中的文件并将它们相互比较?
- reactjs - 在 URL 中显示 API 调用
- javascript - 每次生成动态内容后运行 jQuery
- mysql - 很难使用语法创建 MYSQL 表/定义字段
- ios - iOS iPhone 8 的 Xcode 运行时错误 - [AXRuntimeCommon] AX 查找问题 - errorCode:1100 portName:'com.apple.iphone.axserver' PID:2751
- python - Double while loop keeps running after breaking line
- python - Local Level Model Not Fully Optimizing Irregular State
- google-cloud-platform - 使用从 Google Discovery API 返回的 ID 或名称查找 Google Service Management API 所需的 serviceName?
- c# - Why Unity Transform only allows to put up to 4 decimals?
- python - 如何更改张量定义而不在图中分配新名称