gpt4 book ai didi

php - 将数组数据插入 mysql 表的高效 php 代码?

转载 作者:行者123 更新时间:2023-11-29 04:50:08 24 4
gpt4 key购买 nike

所以我有一个格式为 用户名:$SHA$1010101010101010$010110010101010010101010100101010101001010:255.255.255.255:1342078265214

每条记录换行...大约 5000 多行...我想将其导入到 mysql 表中。通常我会使用 phpmyadmin 和“文件导入”来执行此操作,但现在我想通过使用 php 通过 ftp 下载数据库来自动执行此过程,然后清理现有表数据并上传更新的数据库。

id(AUTH INCREMENT) | username | password | ip | lastlogin

我在下面得到的脚本大部分都有效。虽然 php 会产生一个错误:“PHP fatal error :超过 30 秒的最大执行时间”我相信我可以增加这个时间,但在远程服务器上我怀疑我会被允许,所以我需要找到更好的方法来做到这一点。

在该超时之前,只有大约 1000 条记录会被插入到数据库中......

我正在使用的代码如下。我现在要说的是我不是 PHP 专家,这主要是收集起来拼凑而成的。我正在寻找一些帮助来提高效率,因为我听说像这样插入是很糟糕的。这听起来真的很糟糕,因为当我在本地电脑上运行这个脚本时会出现大量的磁盘划伤。我的意思是为什么它要为了完成这样一个看似简单的任务而杀死硬盘。

<?php
require ('Connections/local.php');

$wx = array_map('trim',file("auths.db"));
$username = array();
$password = array();
$ip = array();
$lastlogin = array();
foreach($wx as $i => $line) {

$tmp = array_filter(explode(':',$line));
$username[$i] = $tmp[0];
$password[$i] = $tmp[1];
$ip[$i] = $tmp[2];
$lastlogin[$i] = $tmp[3];

mysql_query("INSERT INTO authdb (username,password,ip,lastlogin) VALUES('$username[$i]', '$password[$i]', '$ip[$i]', '$lastlogin[$i]') ") or die(mysql_error());
}
?>

最佳答案

尝试使用绑定(bind)参数和 PDO。

<?php
require ('Connections/local.php');

$wx = array_map('trim',file("auths.db"));
$username = array();
$password = array();
$ip = array();
$lastlogin = array();

try {
$dbh = new PDO("mysql:host=$ip;dbname=$database", $dbUsername, $dbPassword);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}

$mysql_query = "INSERT INTO authdb (username,password,ip,lastlogin) VALUES(:username, :password, :ip, :lastlogin)";
$statement = $dbh->prepare($mysql_query);

foreach($wx as $i => $line) {
set_time_limit(0);

$tmp = array_filter(explode(':',$line));
$username[$i] = $tmp[0];
$password[$i] = $tmp[1];
$ip[$i] = $tmp[2];
$lastlogin[$i] = $tmp[3];

$params = array(":username" => $username[$i],
":password" => $password[$i],
":ip" => $ip[$i],
":lastlogin" => $lastlogin[$i]);
$statement->execute($params);
}
?>

关于php - 将数组数据插入 mysql 表的高效 php 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12826087/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com