PHP是一种广泛使用的开源脚本语言,尤其适用于Web开发。它可以嵌入HTML中,用于创建动态网页内容。MySQL则是一种流行的关系型数据库管理系统(RDBMS),它使用结构化查询语言(SQL)进行数据管理。
原因:当处理大量数据时,脚本可能会因为默认的执行时间限制而超时。
解决方案:
set_time_limit(0); // 设置脚本执行时间为无限制
原因:导入大文件时,可能会消耗大量内存导致服务器内存不足。
解决方案:
ini_set('memory_limit', '512M'); // 增加内存限制
原因:文件编码与数据库编码不一致。
解决方案:
$f = fopen("file.csv", "r");
while (($line = fgetcsv($f)) !== FALSE) {
$data[] = mb_convert_encoding($line, 'UTF-8', '原始编码');
}
fclose($f);
原因:尝试导入的数据中存在重复的主键值或违反唯一约束。
解决方案:
// 在导入前检查数据
$query = "SELECT COUNT(*) FROM table WHERE primary_key = ?";
$stmt = $pdo->prepare($query);
foreach ($data as $row) {
$stmt->execute([$row['primary_key']]);
if ($stmt->fetchColumn() > 0) {
// 处理重复数据
}
}
<?php
$host = 'localhost';
$db = 'database';
$user = 'user';
$pass = 'password';
$charset = 'utf8mb4';
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
try {
$pdo = new PDO($dsn, $user, $pass, $options);
} catch (\PDOException $e) {
throw new \PDOException($e->getMessage(), (int)$e->getCode());
}
$query = "SELECT * FROM table";
$stmt = $pdo->query($query);
$fp = fopen('data.csv', 'w');
if ($fp && $stmt) {
while ($row = $stmt->fetch()) {
fputcsv($fp, $row);
}
}
fclose($fp);
?>
<?php
$host = 'localhost';
$db = 'database';
$user = 'user';
$pass = 'password';
$charset = 'utf8mb4';
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
try {
$pdo = new PDO($dsn, $user, $pass, $options);
} catch (\PDOException $e) {
throw new \PDOException($e->getMessage(), (int)$e->getCode());
}
$fp = fopen('data.csv', 'r');
$data = [];
while (($row = fgetcsv($fp)) !== FALSE) {
$data[] = $row;
}
fclose($fp);
$query = "INSERT INTO table (column1, column2) VALUES (?, ?)";
$stmt = $pdo->prepare($query);
foreach ($data as $row) {
$stmt->execute([$row[0], $row[1]]);
}
?>
请注意,以上代码示例仅供参考,实际应用中需要根据具体情况进行调整,并确保数据库连接信息和表结构正确无误。
领取专属 10元无门槛券
手把手带您无忧上云