如何在for循环中循环大量数据?

wn9m85ua  于 2021-10-10  发布在  Java
关注(0)|答案(1)|浏览(434)

我有一个for循环来循环999999个帐户,并将帐户详细信息存储到数据库中,但系统只能在1小时内存储3个帐户数据。所以我想让for循环能够在大量数据中运行,尽管我知道这需要时间。
有没有办法让for循环运行999999数据?
我的代码

for ($i = 0; $i <= 999999; $i++){
    $url="https://8iportal.com/api/v1/portfolios/$i";
    curl_setopt($curl,CURLOPT_URL,$url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

    $result = curl_exec($curl);
    if(curl_error($curl)){
        echo 'Error:' . curl_error($curl);
    }else{
        echo $result;
    }

    $data = json_decode($result, true); 
    if(isset($data['portfolio_info'])){
        foreach ($data['portfolio_info'] as $key => $value) {
            $id= $data['portfolio_info']['id'];
            $user_id = $data['portfolio_info']['user_id'];
            $name = $data['portfolio_info']['name'];  
            $sql="INSERT into portfolio(portfolio_id, user_id,name) values(?,?,?)";
            $query=$conn->prepare($sql);
            $query->bind_param("iis",$id,$user_id,$name);
            $query->execute();  
        }
mnemlml8

mnemlml81#

您可以尝试在大量n个数据中插入数据:

INSERT into portfolio(portfolio_id, user_id,name) values(?,?,?), (?,?,?), (?,?,?), (?,?,?)

但是,因此您必须更改实现:$query->bind_param(…)必须更改为值在sql中的位置(我指的是sql模板中的单个“?”)

相关问题