2016-04-06 8 views
2

私はしばらくの間、現在のユーザーIDを取得する方法を理解するために苦労してきました。更新できるようにするには、その行に何をしたいかを表示します。UPDATE、INSERT、DELETEのWHERE句にmysqlの行IDを選択する方法は?

以下は、です。ユーザーID、db構造、およびHTMLによるファイルアップロードスクリプト/更新クエリ。

問題: WHERE id = ""を指定した場合のみ、行を更新できます。現在のユーザーIDを調べてこれを使用してmysql行を更新​​するにはどうすればよいですか?

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); 
     } 
    } 
?> 

データベース構造:

`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

実際の質問は何ですか? - あなたが何をしようとしているのか、何が働いていないのか、最終的なエラーを説明する。 – Epodax

+0

ファイルのアップロードコードはどこですか? –

+0

準備をして準備文に切り替えた場合 – Mihai

答えて

0

あなたのUPDATE文が実行されません。最後に$stmt->execute();がありません。

0

テーブルに 'image_path'フィールドがないため、更新ステートメントは実行されません。

関連する問題