簡體   English   中英

如何通過php在UPDATE,INSERT,DELETE上為WHERE子句選擇mysql行ID?

[英]How to select mysql row ID for WHERE clause on UPDATE, INSERT, DELETE via php?

我一直在努力了解如何獲取當前用戶ID。 為了能夠更新,顯示或希望對該行進行任何操作。

下面是:通過用戶ID,數據庫結構和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>  

您的Update語句未執行。 缺少$stmt->execute(); 在末尾。

由於表中沒有“ image_path”字段,因此不會執行更新語句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM