2017-07-08 10 views
-1

J'ai le code ci-dessous - il télécharge une image sur le serveur (qui fonctionne réellement), puis insère le lien vers l'image et d'autres informations dans une base de données. D'une certaine manière, il saute la partie de base de données-insertion dans mysqli à chaque fois.PHP/mysqli: Les lignes sont sautées sans raison

Qu'est-ce que je fais mal? Même quand j'insère des échos entre les lignes de la partie mysqli, ça ne leur fait pas écho. Est-ce que ce code est sérieusement ignoré ou est-ce que quelque chose me manque?

<?php 
    //Handle IMG Upload - copyied from w3schools 
    //THIS WORKS! 
    $target_dir = "uploads/"; 
    $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); 
    $uploadOk = 1; 
    $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); 
    // Check if image file is a actual image or fake image 
    if(isset($_POST["submit"])) { 
     $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]); 
     if($check !== false) { 
      echo "File is an image - " . $check["mime"] . "."; 
      $uploadOk = 1; 
     } else { 
      echo "File is not an image."; 
      $uploadOk = 0; 
     } 
     // Check if file already exists 
     if (file_exists($target_file)) { 
      echo "Sorry, file already exists."; 
      $uploadOk = 0; 
     } 
     // Check file size 
     if ($_FILES["fileToUpload"]["size"] > 500000) { 
      echo "Sorry, your file is too large."; 
      $uploadOk = 0; 
     } 
     // Allow certain file formats 
     if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif") { 
      echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed."; 
      $uploadOk = 0; 
     } 
     // Check if $uploadOk is set to 0 by an error 
     if ($uploadOk == 0) { 
      exit("Sorry, your file was not uploaded."); 
      // if everything is ok, try to upload file 
     } else { 
      if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) { 
       echo "The file ". basename($_FILES["fileToUpload"]["name"]). " has been uploaded."; 
       echo "File branche: ". $_FILES["fileToUpload"]["name"]; 
      } else { 
       echo "Sorry, there was an error uploading your file."; 
      } 
     } 

    //Database Upload 

    //It starts to skip right after the mysqli_connect command - with skipping i mean that it doesn´t even execute the echos i have inserted in between. 
    //The vars $_POST["txtpost"] and $target_file are completly fine. I checked it, no reason to question this 
    //The password for connection is completly correct. No reason to question. 
    //This code is actually one phrase in german, cause i´m german. verbindung is translated in connection. 

     $verbindung = mysqli_connect('placeholder','placeholder','placeholder','placeholder'); 
     if(mysqli_connect_errno()) { 
      die('Connect Error'); 
     } 
     $verbindung->set_charset("utf8"); 
     $txtpost = $_POST["txtpost"]; 
     $success = $connection->query("INSERT INTO XXX (Txt, ImageURL) VALUES('$txtpost','$target_file')"); 
     if (!$sucess) { 
      $connection->close(); 
      die("Query did not succeed"); 
     } 
     $connection->close(); 
     echo "Query did succeed"; 
    } 
    //This above database action snippet is just being skipped 
?> 
    <html> 

    <head> 
    <title>Example Title</title> 
    </head> 

    <body> 
    <form action="thisdocument.php" method="post" enctype="multipart/form-data"> 
     Text Data: <input type="text" name="txtpost"> <br /> Image Data: <input type="file" name="fileToUpload" id="fileToUpload"> <br /> Date: (USING CURRENT_TIMESTAMP) <br /> Indexing ID Number: (USING AI) <br /> 
     <input type="submit" value="Submit Data" name="submit"> 
    </form> 
    </body> 
    </html> 

Le chargement d'image fonctionne complètement et est copié à partir de w3schools.com. Toutes les informations privées etc. sont remplacées par des mots évidents. J'ai inséré des commentaires dans le code qui clarifient toute autre chose.

WOOPS: Je viens de réaliser que l'éditeur d'extrait de débordement de la pile « tondu » cet extrait dans tout désordre. Désolé pour ça. Pour plus de clarté, la partie if(isset($_POST["submit"])) { est autour de tout le code, aussi autour de la partie mysqli cassée.

+0

Lines __are not__ sautées. Vous code a juste des erreurs, que vous ne remarquez pas –

+0

Vous êtes ouvert aux injections SQL, utilisez des requêtes paramétrées. – chris85

+3

'$ verbindung' vs' $ connection', '$ success' vs' $ sucess' ... –

Répondre

0

Vous avez une erreur d'orthographe ici:

if (!$sucess) { 

devrait être $ succès

+0

mais encore: la requête aurait été exécutée, donc l'enregistrement aurait dû être ajouté (sauf si $ succès était aussi FAUX) –

+0

J'ai aussi eu une erreur avec $ connection/$ verbindung, comme @JiriHrazdil mentionné. Mais j'ai besoin de quelque chose à marquer, donc je viens de marquer ça ici. – VicStudio