Insertion multiple

gnaoule Messages postés 28 Statut Membre -  
jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
Je suis entrain de faire un script en php qui permet de l'insertion de plus de 1000 enregistrements dans une table. En local le script marche normalement (tous les essais passe bien). mais sur le serveur ; le premier essai passe normalement ,mais quand j'essai un second 20 seconde après
Le serveur se plante et affiche une erreur :
Fatal error: Call to a member function rowCount() on boolean in /htdocs/bestschool.eglisia.com/sd/personnes/app-list.php on line 19

Voici le code php :

<?php 
error_reporting(1);
session_start();
 include("../../db/db.php");
 include("../../db/conx.php");
 include("../../funct/code.php"); 
 //include("../../funct/note.php"); 
 include("../../funct/sms.php");
 include("../../funct/effectif.php");  
 include("../../config/conf.php");

   
 if($_SESSION['it'] <= sizeof($_SESSION['_APTAB'])){ 
     $i = 1;
     for($a = ($_SESSION['it']) ? $_SESSION['it'] : 0; $a < sizeof($_SESSION['_APTAB']); $a++){  
         $tab = explode("*",$_SESSION['_APTAB'][$a]);
  if($link->query("SELECT * FROM note_bulmat WHERE AP_mle='".$tab[0]."' AND matiere_ID='".$tab[1]."' AND classe_ID='".$tab[2]."' AND per_id='".$tab[3]."' ")->rowCount()===0){ 
    
     $rek = $link -> exec("INSERT INTO note_bulmat VALUES(
     'NULL',
     '".$tab[0]."',
     '".$tab[1]."',
     '".$tab[2]."',
     '".$tab[3]."',
     '".$tab[4]."',
     '',   
     '".$tab[5]."',
     '".date("Y-m-d H:i:s",time())."',
     '',
     '".$_COOKIE['LOGIN']."')"); 

          $_SESSION['CC'] += 1;
            if($i == 100  ) break; 
      $i++;
      
       }else{
       
       $link->exec("UPDATE note_bulmat SET moyenne='".$tab[4]."', updated='".date("Y-m-d H:i:s",time())."', rang='' WHERE AP_mle='".$tab[0]."' AND matiere_ID='".$tab[1]."' AND classe_ID='".$tab[2]."' AND per_id='".$tab[3]."'");
          $_SESSION['CC'] += 1;
            if($i == 100  ) break; 
      $i++;
       }
       
       }
  
          header("refresh:10; url=eva-cmp2.php");
         $_SESSION['it'] += 100; 
    }


if($_SESSION['it'] >= sizeof($_SESSION["_APTAB"]) ){
  $_SESSION['CC'] = 0;
  $_SESSION['it'] = 0;
  $_SESSION['_CC'] = 0; 
  header("refresh:5; url='eva-cmp3.php'"); 
  }     

?>

Je vous remercie d'avance pour votre aide

EDIT: Ajout du LANGAGE dans les balises de code pour avoir la coloration syntaxique

1 réponse

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    Bonjour,

    Pour commencer, pense, lorsque tu postes du code, à préciser le LANGAGE dans les balises de code.
    Explications à lire ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

    Ensuite,
    Evites de trop chainer tes fonctions...
    C'est moins facile à debuguer.
    Donc, réécris le code de la ligne
      if($link->query("SELECT * FROM note_bulmat WHERE AP_mle='".$tab[0]."' AND matiere_ID='".$tab[1]."' AND classe_ID='".$tab[2]."' AND per_id='".$tab[3]."' ")->rowCount()===0){ 
       
    

    par exemple comme ceci
      $sql = "SELECT * 
              FROM note_bulmat 
              WHERE AP_mle='".$tab[0]."' 
              AND matiere_ID='".$tab[1]."' 
              AND classe_ID='".$tab[2]."' 
              AND per_id='".$tab[3]."'";
      $res = $link->query($sq);
      if(!$res){
        echo "Erreur dans la requête " . $sql;
        exit;
      }
      
      if($res->rowCount()===0){
    


    0