首先依旧是先放成品:
<?php
// 导入CSV文件
$csvFile = fopen('qtu.csv', 'r');
// 数据库连接信息
$servername = "localhost";
$username = "lansbk";
$password = "XPY520520520";
$dbname = "lansbk";
// 要操作的表单
$tableName = "typecho_contents";
//默认匹配字段
$searchField = "cid";
// 创建数据库连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接是否成功
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
// 遍历CSV文件的每一行
//记录行值
$hang = 0;
while (($row = fgetcsv($csvFile)) !== false) {
// 每一行数据作为一个数组
$rowData = $row;
//行累积
$hang = $hang + 1;
//判断为第一行
if ($hang == 1) {
//备份
$rowData2 = $rowData;
//首行作为键名
function createNewArray($inputArray) {
$newArray = array();
foreach ($inputArray as $value) {
$newArray[$value] = $value;
}
return $newArray;
}
$rowData4 = createNewArray($rowData);
print_r($rowData4);
//$searchField = $rowData2[0];
} else {
// 遍历后面行中的每个字段,然后构造为一个带标题键名的新数组
// 获取作为字符键名的数组的长度
$length = count($rowData2);
// 创建一个新的关联数组,将没有键名的索引数组转换为带有字符键名的关联数组
$newArray = array();
for ($i = 0; $i < $length; $i++) {
$rowData3[$rowData2[$i]] = $rowData[$i];
}
echo "<br><hr>读取改行数据:" . "<br>";
print_r($rowData3);
echo "<br>识别ID为:" . $rowData3[$searchField] . "<br>开始更新数据库操作:<br>";
//开始更新数据库操作
//判断是否全盘更新
if (true) {
foreach ($rowData2 as $field) {
//匹配字段不操作
if ($searchField != $field) {
echo $field . $rowData3[$searchField] . "更新<br>";
// 构造适合替换的条件语句
$rowCondition = "$rowData4[$searchField] = \"$rowData3[$searchField]\"";
// 要更新的字段名称
$fieldToUpdate = $rowData4[$field];
// 替换为要设置的新值
$newValue = $rowData3[$field];
//对特殊字符转义
$newValue = $conn->real_escape_string($newValue);
// 构建更新语句(字段反引号防止保留字)
$sql = "UPDATE $tableName SET `$fieldToUpdate` = '$newValue' WHERE $rowCondition";
// 执行更新操作
if ($conn->query($sql) === TRUE) {
} else {
echo "更新失败: " . $conn->error;
}
}
}
} else {
}
}
}
$conn->close();
// 关闭CSV文件
fclose($csvFile);
?>
© 版权声明
部分内容源于网络
THE END






请登录后查看评论内容