2017-05-19 2 views
0

J'ai le script PHP suivant qui fait une requête SELECT, lie les résultats aux variables, exécute la logique en fonction de la valeur des variables liées et fait une autre mise à jour de la table en fonction de la logique. Ce code s'exécute avec succès (je vois la colonne appropriée mise à jour avec la valeur correcte dans ma table) mais il faut environ 10 secondes pour obtenir la réponse du serveur et la réponse est la suivante:500 Erreur de serveur interne donnée même si le code aboutit

"Le serveur Vous avez rencontré une erreur interne ou une mauvaise configuration et n'a pas pu compléter votre demande Veuillez contacter l'administrateur du serveur à ['contact privé'] pour les informer du moment où cette erreur s'est produite et des actions que vous avez effectuées juste avant cette erreur. Plus d'informations sur cette erreur peuvent être disponibles dans l'erreur de serveur log

En outre, une erreur 500 erreur interne du serveur a été rencontrée tout en essayant d'utiliser un ErrorDocument pour gérer la demande. "

Voici mon script:

include("../../include/session.php"); 

include('inc.php'); 

if ((isset($_POST['lotnumberinput'])) AND (isset($_POST['sgref']))) { 


$sgref = $_POST['sgref']; 
$lotnumber = $_POST['lotnumberinput']; 

$conn = new mysqli($servername, $username, $password, $dbname); 

    if ($conn->connect_errno) { 
     echo "There was a problem connecting to MySQL: (" . $conn->connect_errno . ") " . $conn->connect_error; 
    } 

    if (!($sqlget = $conn->prepare("SELECT lotnumber, lotnumber2, lotnumber3 FROM invoicesJan2016 WHERE id = ?"))) { 
     echo "Prepare failed: (" . $conn->errno . ") " . $conn->error; 
    } 

    if (!$sqlget->bind_param("s", $sgref)) { 
     echo "Binding parameters failed: (" . $sqlget->errno . ") " . $sqlget->error; 
    } 

    if (!$sqlget->execute()) { 
     echo "Execute failed: (" . $sqlget->errno . ") " . $sqlget->error; 
    } 


    $sqlget->bind_result($lotnumber1, $lotnumber2, $lotnumber3); 

    $res = $sqlget->fetch(); 

    $sqlget->free_result(); 

if ($res) { 

    while ($res) { 


     if ($lotnumber1 == "") { 


      if (!($sql = $conn->prepare("UPDATE invoicesJan2016 SET lotnumber = ? WHERE id = ?"))) { 
       echo "Prepare failed: (" . $conn->errno . ") " . $conn->error; 
      } 

      if (!$sql->bind_param("ss", $lotnumber, $sgref)) { 
       echo "Binding parameters failed: (" . $sql->errno . ") " . $sql->error; 
      } 


      if (!$sql->execute()) { 
        echo "Execute failed: (" . $sql->errno . ") " . $sql->error; 

      } else { 

       echo "SG Successfully Added!"; 
      } 


     } else if (($lotnumber1 !== "") AND ($lotnumber2 == "")) { 


      if (!($sql = $conn->prepare("UPDATE invoicesJan2016 SET lotnumber2 = ? WHERE id = ?"))) { 
       echo "Prepare failed: (" . $conn->errno . ") " . $conn->error; 
      } 


      if (!$sql->bind_param("ss", $lotnumber, $sgref)) { 
       echo "Binding parameters failed: (" . $sql->errno . ") " . $sql->error; 
      } 


      if (!$sql->execute()) { 
        echo "Execute failed: (" . $sql->errno . ") " . $sql->error; 

      } else { 

       echo "SG Successfully Added!"; 
      } 


     } else if (($lotnumber1 !== "") AND ($lotnumber2 !== "") AND ($lotnumber3 == "")) { 


      if (!($sql = $conn->prepare("UPDATE invoicesJan2016 SET lotnumber3 = ? WHERE id = ?"))) { 
       echo "Prepare failed: (" . $conn->errno . ") " . $conn->error; 
      } 


      if (!$sql->bind_param("ss", $lotnumber, $sgref)) { 
       echo "Binding parameters failed: (" . $sql->errno . ") " . $sql->error; 
      } 


      if (!$sql->execute()) { 
        echo "Execute failed: (" . $sql->errno . ") " . $sql->error; 

      } else { 

       echo "SG Successfully Added!"; 
      } 


     } else { 

      echo "There are too many lot numbers associated with this SG. Please call IT to request additional space."; 

     } 

    } // End While. 

}//end if 


} else { 

    echo "SG Number did not save. Please try again."; 

} 

$sqlget->close(); 
$sql->close(); 
$conn->close(); 

Toute aide est appréciée comme je ne sais pas pourquoi sa prise si longtemps pour obtenir une réponse.

Merci!

+0

Avez-vous une déclaration d'erreur est activée? Pourriez-vous vérifier vos fichiers journaux pour voir si cela dit quelque chose? –

+0

En fait, il a été downvoted parce indentation est horrible et rend vraiment difficile de lire votre code afin de vous aider. Au cas où, ce n'était pas mon vote. – Alfabravo

+0

@alfabravo .... OK, je vais garder cela à l'esprit. Merci pour la suggestion. En ce qui concerne le sujet réel de la question, le journal des erreurs montre que l'erreur interne 500 est provoquée par les règles de sécurité Mod pour les limites de réponse, indiquant que la réponse était trop grande pour la règle mod. Je suis en train d'examiner la question plus en profondeur. – rdimouro

Répondre

1

Merci pour les réponses. J'ai été en mesure de confirmer que l'erreur interne du serveur 500 a été causée par une taille de réponse de 4 Mo ... !!! Cela a été causé par la boucle while de la logique. En supprimant le temps et en restructurant les composants logiques de la page, la réponse est nettement plus petite et fonctionne parfaitement. Voici la version mise à jour du code qui fonctionne comme il se doit. Merci à tous pour votre aide !!!

MON CODE:

<?php 

include("../../include/session.php"); 
include('inc.php'); 

if ((isset($_POST['lotnumberinput'])) AND (isset($_POST['sgref']))) { 

    $sgref = $_POST['sgref']; 
    $lotnumber = $_POST['lotnumberinput']; 

    $conn = new mysqli($servername, $username, $password, $dbname); 

    if ($conn->connect_errno) { 
     echo "There was a problem connecting to MySQL: (" . $conn->connect_errno . ") " . $conn->connect_error; 
    } 

    if (!($sqlget = $conn->prepare("SELECT lotnumber, lotnumber2, lotnumber3 FROM invoicesJan2016 WHERE id = ?"))) { 
     echo "Prepare failed: (" . $conn->errno . ") " . $conn->error; 
    } 

    if (!$sqlget->bind_param("s", $sgref)) { 
     echo "Binding parameters failed: (" . $sqlget->errno . ") " . $sqlget->error; 
    } 

    if (!$sqlget->execute()) { 
    echo "Execute failed: (" . $sqlget->errno . ") " . $sqlget->error; 
    } 

    $sqlget->bind_result($lotnumber1, $lotnumber2, $lotnumber3); 

    $res = $sqlget->fetch(); 

    $sqlget->free_result(); 

    if ($res) { 

    if ($lotnumber1 == "") { 

     if (!($sql = $conn->prepare("UPDATE invoicesJan2016 SET lotnumber = ? WHERE id = ?"))) { 
     echo "Prepare failed: (" . $conn->errno . ") " . $conn->error; 
     } 

    } else if (($lotnumber1 !== "") AND ($lotnumber2 == "")) { 

     if (!($sql = $conn->prepare("UPDATE invoicesJan2016 SET lotnumber2 = ? WHERE id = ?"))) { 
     echo "Prepare failed: (" . $conn->errno . ") " . $conn->error; 
     } 

    } else if (($lotnumber1 !== "") AND ($lotnumber2 !== "") AND ($lotnumber3 == "")) { 

     if (!($sql = $conn->prepare("UPDATE invoicesJan2016 SET lotnumber3 = ? WHERE id = ?"))) { 
     echo "Prepare failed: (" . $conn->errno . ") " . $conn->error; 
     } 

    } else { 

     $sql = ""; 

    } 

    if (!($sql == "")) { 

     if (!$sql->bind_param("ss", $lotnumber, $sgref)) { 

     echo "Binding parameters failed: (" . $sql->errno . ") " . $sql->error; 
     } 

     if (!$sql->execute()) { 

     echo "Execute failed: (" . $sql->errno . ") " . $sql->error; 

     } else { 

     echo "SG Successfully Added!"; 
     } 

    } else { 

     echo "There are too many lot numbers associated with this SG. Please call IT to request additional space."; 

    } 

    }//end if 

} else { 

    echo "SG Number did not save. Please try again."; 

} 

$sqlget->close(); 
$sql->close(); 
$conn->close(); 

?> 
0

(Sous la direction de réponse) Après avoir essayé de lire votre code, qui ne sont pas correctement en retrait et rend je vous suggère de lire vraiment difficile, pour vérifier si vos variables ($sqlget, $sql, $conn) détiennent toujours une instance de les classes de sorte que vous pouvez réellement fermer n'importe quoi.

<?php 

include("../../include/session.php"); 

include('inc.php'); 

if ((isset($_POST['lotnumberinput'])) AND (isset($_POST['sgref']))) { 

    $sgref = $_POST['sgref']; 
    $lotnumber = $_POST['lotnumberinput']; 
    $conn = new mysqli($servername, $username, $password, $dbname); 

    if ($conn->connect_errno) { 
     echo "There was a problem connecting to MySQL: (" . $conn->connect_errno . ") " . $conn->connect_error; 
    } 

    if (!($sqlget = $conn->prepare("SELECT lotnumber, lotnumber2, lotnumber3 FROM invoicesJan2016 WHERE id = ?"))) { 
     echo "Prepare failed: (" . $conn->errno . ") " . $conn->error; 
    } 

    if (!$sqlget->bind_param("s", $sgref)) { 
     echo "Binding parameters failed: (" . $sqlget->errno . ") " . $sqlget->error; 
    } 

    if (!$sqlget->execute()) { 
     echo "Execute failed: (" . $sqlget->errno . ") " . $sqlget->error; 
    } 

    $sqlget->bind_result($lotnumber1, $lotnumber2, $lotnumber3); 
    $res = $sqlget->fetch(); 
    $sqlget->free_result(); 

    if ($res) { 

     while ($res) { 

      if ($lotnumber1 == "") { 

       if (!($sql = $conn->prepare("UPDATE invoicesJan2016 SET lotnumber = ? WHERE id = ?"))) { 
        echo "Prepare failed: (" . $conn->errno . ") " . $conn->error; 
       } 

       if (!$sql->bind_param("ss", $lotnumber, $sgref)) { 
        echo "Binding parameters failed: (" . $sql->errno . ") " . $sql->error; 
       } 

       if (!$sql->execute()) { 
        echo "Execute failed: (" . $sql->errno . ") " . $sql->error; 
       } else { 
        echo "SG Successfully Added!"; 
       } 

      } else if (($lotnumber1 !== "") AND ($lotnumber2 == "")) { 

       if (!($sql = $conn->prepare("UPDATE invoicesJan2016 SET lotnumber2 = ? WHERE id = ?"))) { 
        echo "Prepare failed: (" . $conn->errno . ") " . $conn->error; 
       } 

       if (!$sql->bind_param("ss", $lotnumber, $sgref)) { 
        echo "Binding parameters failed: (" . $sql->errno . ") " . $sql->error; 
       } 

       if (!$sql->execute()) { 
        echo "Execute failed: (" . $sql->errno . ") " . $sql->error; 
       } else { 
        echo "SG Successfully Added!"; 
       } 

      } else if (($lotnumber1 !== "") AND ($lotnumber2 !== "") AND ($lotnumber3 == "")) { 

       if (!($sql = $conn->prepare("UPDATE invoicesJan2016 SET lotnumber3 = ? WHERE id = ?"))) { 
        echo "Prepare failed: (" . $conn->errno . ") " . $conn->error; 
       } 

       if (!$sql->bind_param("ss", $lotnumber, $sgref)) { 
        echo "Binding parameters failed: (" . $sql->errno . ") " . $sql->error; 
       } 

       if (!$sql->execute()) { 
        echo "Execute failed: (" . $sql->errno . ") " . $sql->error; 
       } else { 
        echo "SG Successfully Added!"; 
       } 

      } else { 
       echo "There are too many lot numbers associated with this SG. Please call IT to request additional space."; 
      } 

     } // End While. 

    }//end if 

    if($sqlget != null){$sqlget->close();} 
    if($sql != null){$sql->close();} 
    if($conn != null) {$conn->close();} 

} else { 
    echo "SG Number did not save. Please try again."; 
} 

?> 
+0

J'ai déplacé les parties proches du script en dehors de la logique if et le comportement est le même ... – rdimouro