PHP PDO Insert语句超过执行时间

PHP PDO Insert语句超过执行时间,php,mysql,pdo,Php,Mysql,Pdo,我使用准备好的语句插入批量值,赋值,执行是在循环中完成的,但它花费的时间太长,超出了执行限制 这是我的密码: if(isset($_GET['mov_id']) && isset($_GET['season'])) { $id= $_GET['mov_id']; $season = $_GET['season']; $stmt = $DB_con->prepare("SELECT * FROM `mov_movies` where moviesID =:id"); $stm

我使用准备好的语句插入批量值,赋值,执行是在循环中完成的,但它花费的时间太长,超出了执行限制

这是我的密码:

if(isset($_GET['mov_id']) && isset($_GET['season']))
{
$id= $_GET['mov_id'];
$season = $_GET['season'];
$stmt = $DB_con->prepare("SELECT * FROM `mov_movies` where moviesID =:id");
$stmt->execute(array(':id'=>$id));
$row=$stmt->fetch(PDO::FETCH_ASSOC);
$imdbID = $row['IMDBid'];


if(isset($_POST['btn-addmovie']))
{
$episodes = trim($_POST['tepisodes']);

    $name = "";
     $episode = "";
     $DOR = "";
     $IMDB = "";
     $drive = "";
     $cdn = "";

     $stmt = $DB_con->prepare("DELETE FROM `mov_season` where movId =:id");
     $stmt->execute(array(':id'=>$id));
     $count = 1;

    $stmt = $DB_con->prepare("INSERT INTO `mov_season` (`movId`, `season`, `episode`, `releaseDate`, `IMDB`, `driveLink`, `cdnLink` , `title`) VALUES (:id, :season, :episode,:releaseDate, :IMDB,:drive,:cdn,:name)");
    $stmt->bindparam(":id", $id);
       $stmt->bindparam(":season", $season);
       $stmt->bindparam(":episode", $episode);  
       $stmt->bindparam(":releaseDate", $DOR);  
       $stmt->bindparam(":IMDB", $IMDB ); 
       $stmt->bindparam(":drive", $drive ); 
       $stmt->bindparam(":cdn", $cdn );
       $stmt->bindparam(":name", $name);
     while($count < $episodes){

     $name = trim($_POST['name'.$count]);
     $episode = trim($_POST['episode'.$count]);
     $DOR = trim($_POST['DOR'.$count]);
     $IMDB = trim($_POST['imdb'.$count]);
     $drive = trim($_POST['drive'.$count]);
     $cdn = trim($_POST['cdn'.$count]);

     if(($drive != "") || ($cdn = "")){



       $stmt->execute();

       $count++;
     }




    }
     $success = "Successfully Updated!";



 }
 }
if(isset($\u GET['mov\u id'])和&isset($\u GET['seasure']))
{
$id=$\u GET['mov\u id'];
$seasure=$_获得['seasure'];
$stmt=$DB_con->prepare(“从'mov_movies`中选择*,其中moviesID=:id”);
$stmt->execute(数组(':id'=>$id));
$row=$stmt->fetch(PDO::fetch_ASSOC);
$imdbID=$row['imdbID'];
如果(isset($_POST['btn-addmovie']))
{
$集=修剪($_POST['tepisodes']);
$name=“”;
$eposion=“”;
$DOR=”“;
$IMDB=”“;
$drive=“”;
$cdn=“”;
$stmt=$DB_con->prepare(“从'mov_seasure'中删除,其中movId=:id”);
$stmt->execute(数组(':id'=>$id));
$count=1;
$stmt=$DB_con->prepare(“插入到'mov_season'('movId'、'season'、'season'、'releaseDate'、'IMDB'、'driveLink'、'cdnLink'、'title`)值(:id、:season、:seasedate、:IMDB、:drive、:cdn、:name));
$stmt->bindparam(“:id”,$id);
$stmt->bindparam(“:seasure”,$seasure);
$stmt->bindparam(“:插曲”,$插曲);
$stmt->bindparam(“:releaseDate”,$DOR);
$stmt->bindparam(“:IMDB”,$IMDB);
$stmt->bindparam(“:drive”,$drive);
$stmt->bindparam(“:cdn”,$cdn);
$stmt->bindparam(“:name”,$name);
while($count<$集){
$name=trim($_POST['name'.$count]);
$SECTION=修剪($_POST['SECTION.$count]);
$DOR=修剪($_POST['DOR'.$count]);
$IMDB=修剪($_POST['IMDB.$count]);
$drive=trim($_POST['drive'.$count]);
$cdn=修剪($_POST['cdn'.$count]);
如果(($drive!=”)| |($cdn=“”)){
$stmt->execute();
$count++;
}
}
$success=“已成功更新!”;
}
}

语句发生在while循环内的if循环中。即使只执行一次,也会超过120秒的执行时间。

尝试使用大容量插入。在这种情况下,您必须在单个查询上执行,该查询将插入多个记录


这是你的问题。如果此条件为真,则仅递增$count,这意味着您可能处于无限循环中

if(($drive != "") || ($cdn = "")){
    $stmt->execute();
    $count++;
}
改为这样做,使$count始终递增

if(($drive != "") || ($cdn = "")){
    $stmt->execute();
}
$count++;

我们这里有多少张唱片?另外,这不是一个合适的大容量插入,您要对每条记录执行一条语句,而不是说每1000条记录执行一条语句。为什么不尝试使用PDO进行大容量插入通常最多只有10条记录