2017-01-04 6 views
2

Ich ist eine Schaltfläche mit einem Bild hochladen und jedes Mal, wenn ich ein Bild hochladen Bilder speichern nicht auf der Datenbank und es gibt keine bestimmten Fehler,Das hochgeladenes Bild speichert nicht auf der Datenbank

hier ist mein Code:

<td> 
    <form method="POST" enctype="multipart/form-data"> 
    <input type="file" name="file" required> 
     <button type="submit" name="files" class="btn btn-primary btn-xs"> 
      Submit 
     </button> 
     <?php 
      if(isset($_POST['files'])) 
       { 
       $userid = $row['stall_id']; 
       $a = $_FILES['file']['name']; 
       $ab = $_FILES['file']['tmp_name']; 
       $location = "".$a; 
       move_uploaded_file($ab, "../pictures/".$location); 

       $sql2 = $conn->prepare("UPDATE stall SET file = ? WHERE stall_id = ?"); 
       $sql2->execute(array($location,$userid)); 

      if($sql){             
       echo ' 
       <script>               
        window.location = "stalls.php" 
       </script>';             
        } 
        } 
       ?> 
</td> 
+0

wird die Datei laden eigentlich? –

+0

@Dagon es übermittelt nur, aber es speichert nicht in der Datenbank. –

+0

ja, aber die Datei, ist es hochgeladen? –

Antwort

1

Habe ich es mir selbst heraus,

<td> 
<form method="POST" enctype="multipart/form-data"> 
    <input type="file" name="file" required> 
    <input type="hidden" name="stall_id" value="<?php echo $value['stall_id']?>"> 
    <button type="submit" name="files" class="btn btn-primary btn-xs"> 
    Submit 
    </button> 
    <?php 
    if(isset($_POST['files'])) 
    { 
    $userid = $_POST['stall_id']; 
    $a = $_FILES['file']['name']; 
    $ab = $_FILES['file']['tmp_name']; 
    $location = "".$a; 
    move_uploaded_file($ab, "../pictures/".$location); 

    $sql2 = $conn->prepare("UPDATE stall SET file = ? WHERE stall_id = ?"); 
    $sql2->execute(array($location,$userid)); 

    if($sql2){             
    echo ' 
    <script>      
    window.location = "stalls.php" 
    </script>';             
    } 
    } 
    ?> 
    </td> 
0
  1. Bitte Bind Parameter Nach Aussage vorbereiten. überprüfen Docs- http://php.net/manual/en/mysqli.prepare.php
  2. , wenn Bedingung Put $ update (Rückgabewert der Ausführung) anstelle von SQL
  3. schließen </form>-Tag.
  4. Überprüfen Sie alle Variablen mit Daten. Überprüfen Sie mit var_dump(), print_r() oder echo() Methoden.

    <td> 
    <form method="POST" enctype="multipart/form-data"> 
    <input type="file" name="file" required> 
        <button type="submit" name="files" class="btn btn-primary btn-xs"> 
        Submit 
    </button> 
    </form> 
    </td> 
    <?php 
        if(isset($_POST['files'])) 
         { 
         $userid = $row['stall_id']; 
         $a = $_FILES['file']['name']; 
         $ab = $_FILES['file']['tmp_name']; 
         $location = "".$a; 
         move_uploaded_file($ab, "../pictures/".$location); 
    
         if($sql2 = $conn->prepare("UPDATE stall SET file = ? WHERE stall_id = ?")) 
         { 
    
          $sql2->bindParam(1, $location, PDO::PARAM_STR); 
          $sql2->bindParam(2, $userid, PDO::PARAM_INT); 
    
          $update=$sql2->execute(); 
          if($update){             
           echo ' 
           <script>               
            window.location = "stalls.php" 
           </script>';             
          } 
         }else{ 
          echo 'sql prepare failed'; 
         } 
        } 
    ?> 
    
+0

Schwerwiegender Fehler: Aufruf zu undefinierter Methode PDOStatement :: bind_param() in C: \ xampp \ htdocs \ VCCDMStry \ pages \ stalls.php in Zeile 65 –

+0

überprüfen Sie bitte '$ conn' erhalten Sie die richtige Verbindung? –

+0

Ja, ich habe eine richtige Verbindung Ich denke, das Problem ist, dass es das hochgeladene Bild nicht aktualisieren kann, die Variable wurde nicht aufgerufen? –

-1

Wechsel von

$sql2 = $conn->prepare("UPDATE stall SET file = ? WHERE stall_id = ?"); 
$sql2->execute(array($location,$userid)); 

zu

$sql2 = $conn->prepare("UPDATE stall SET file = ? WHERE stall_id = ?"); 
$sql2->bindParam(1, $location, PDO::PARAM_STR); 
$sql2->bindParam(2, $userid, PDO::PARAM_INT); 
$sql2->execute(); 
+0

Okay, seit das Update die mysqli-Syntaxprobleme entfernt hat, entferne ich die vorherigen Kommentare. Warum beschränkst du jetzt den "Standort" auf 12 Zeichen?Was war mit dem OP-Code falsch, bevor Sie sich verbessern? – chris85

+0

überprüfen Ich verwende nicht 12 –

+0

tatsächlich bieten wir Alternative, weil nach seinem Kommentar Verbindung hergestellt wurde, so dass keine Notwendigkeit, es zu überprüfen –

Verwandte Themen