2016-04-06 7 views
2

Ich habe seit einiger Zeit gekämpft, um zu verstehen, wie man die aktuelle Benutzer-ID bekommt. In der Lage zu sein, zu aktualisieren, anzuzeigen oder was auch immer man mit dieser Reihe machen möchte.Wie mysql Zeile ID für WHERE-Klausel auf UPDATE, INSERT, DELETE über PHP auswählen?

Unten ist: Datei Upload-Skript/Update-Abfrage von Benutzer-ID, der db-Struktur und der HTML.

Das Problem: Ich kann die Zeile aktualisieren, jedoch nur, wenn ich WHERE id = "" Wie kann ich die aktuelle Benutzer-ID herausfinden und diese verwenden, um die MySQL-Zeile zu aktualisieren?

php:

<?php 
    if(isset($_FILES['image'])){ 
     $errors= array(); 
     $file_name = $_FILES['image']['name']; 
     $file_size =$_FILES['image']['size']; 
     $file_tmp =$_FILES['image']['tmp_name']; 
     $file_type=$_FILES['image']['type']; 
     $file_ext=strtolower(end(explode('.',$_FILES['image']['name']))); 
     $img_path = ("images/".$file_name); 



     $expensions= array("jpeg","jpg","png"); 

     if(in_array($file_ext,$expensions)=== false){ 
     $errors[]="extension not allowed, please choose a JPEG or PNG file."; 
     } 

     if($file_size > 2097152){ 
     $errors[]='File size must be excately 2 MB'; 
     } 

     if(empty($errors)==true){ 


// connect to the database 

    $servername = 'HOST'; 
    $username = 'USER'; 
    $password = 'PASS'; 
    $dbname = 'TABLE'; 


try { 
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); 
    // set the PDO error mode to exception 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

    $sql = "UPDATE users SET image_name='$file_name', image_size='$file_size', image_path='$img_path' WHERE user_id=2"; 

    // Prepare statement 
    $stmt = $conn->prepare($sql); 

    // execute the query 
    $stmt->execute(); 

    // echo a message to say the UPDATE succeeded 
    echo $stmt->rowCount() . " records UPDATED successfully"; 
    } 
catch(PDOException $e) 
    { 
    echo $sql . "<br>" . $e->getMessage(); 
    } 

$conn = null; 


     move_uploaded_file($file_tmp,"images/".$file_name); 
     echo "Success"; 
     }else{ 
     print_r($errors); 
     } 
    } 
?> 

Datenbankstruktur:

`user_id` int(5) NOT NULL AUTO_INCREMENT, 
    `user_name` varchar(25) NOT NULL, 
    `user_email` varchar(35) NOT NULL, 
    `user_pass` varchar(255) NOT NULL, 
    `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
    `image_type` varchar(25) NOT NULL, 
    `image` longblob NOT NULL, 
    `image_size` varchar(25) NOT NULL, 
    `image_name` varchar(50) NOT NULL, 
    PRIMARY KEY (`user_id`), 
    UNIQUE KEY `user_email` (`user_email`) 
) 

HTML:

<form enctype="multipart/form-data" action="" method="post"> 
<input type="file" name="image"> 
<input name="upload_img" type="submit" value="Upload image"> 
</form> 
+1

Also, was ist die eigentliche Frage? - Erklären Sie, was Sie versuchen zu tun, was nicht funktioniert und eventuelle Fehler. – Epodax

+0

Wo ist Ihr Datei-Upload-Code? –

+0

Wenn Sie prepare verwenden, wechseln Sie zu vorbereiteten Anweisungen. – Mihai

Antwort

0

Ihre Update-Anweisung nicht ausgeführt wird. Fehlende $stmt->execute(); am Ende.

0

Die update-Anweisung wird nicht ausgeführt, da in der Tabelle kein Feld 'image_path' vorhanden ist.