如何使用PDO将upload_image的代码放入插入函数?

时间:2015-08-14 04:54:44

标签: php pdo

我这里有用于在database.i中插入记录的脚本。这里有两个脚本,一个用于插入记录,另一个也是插入函数,区别在于第二个脚本是插入image.now我是什么想要在这里发生的是将第一个脚本和第二个脚本存储在一个表中,应该看起来像这个user_id,用户名,密码,省,FILE_NAME,FILE_SIZE,FILE_TYPE。但我不知道该怎么做。 。有人请帮帮我吗?

此处是插入记录的脚本

public function create($username,$password,$province)
{
try
{
  $stmt = $this->db->prepare("INSERT INTO login(username,password,province) VALUES(:username, :password, :province)");
  $stmt->bindparam(":username",$username);
  $stmt->bindparam(":password",$password);
  $stmt->bindparam(":province",$province);
  $stmt->execute();
  return true;
  }
  catch(PDOException $e)
  {
  echo $e->getMessage();  
  return false;
  } 
  }

,这里是upload_image

if(isset($_FILES['files'])){
$query = "INSERT into tish_images(`FILE_NAME`,`FILE_SIZE`,`FILE_TYPE`)
         VALUES(:FILE_NAME,:FILE_SIZE,:FILE_TYPE)";
$stmt  = $DB_con->prepare($query);
$errors= array();
foreach($_FILES['files']['tmp_name'] as $key => $error ){
    if ($error != UPLOAD_ERR_OK) {
        $errors[] = $_FILES['files']['name'][$key] . ' was not uploaded.';
        continue;
    }
    $file_name = $key.$_FILES['files']['name'][$key];
    $file_size = $_FILES['files']['size'][$key];
    $file_tmp  = $_FILES['files']['tmp_name'][$key];
    $file_type = $_FILES['files']['type'][$key];  
    if($file_size > 2097152){
        $errors[] = 'File size must be less than 2 MB';
        continue;
    }
    try{       
        $stmt->bindParam( ':FILE_NAME', $file_name , PDO::PARAM_STR );
        $stmt->bindParam( ':FILE_SIZE', $file_size, PDO::PARAM_STR );
        $stmt->bindParam( ':FILE_TYPE', $file_type, PDO::PARAM_STR );
        $stmt->execute();

        $desired_dir="image_uploads";

        if(is_dir($desired_dir)==false){
            mkdir($desired_dir, 0700);// Create directory if it does not exist
        }
        if(is_file($desired_dir.'/'.$file_name)==false){
            move_uploaded_file($file_tmp,$desired_dir.'/'.$file_name);
        }else{    //rename the file if another one exist
            $new_file=$desired_dir.'/'.$file_name.time();
            move_uploaded_file($file_tmp,$new_file) ;               
        }
    }catch(PDOException $e){
        $errors[] = $file_name . 'not saved in db.';
        echo $e->getMessage();
    }   
}
if(empty($error)){
    echo "Success";
}
}

这里是index.php

<?php
include_once 'dbconfig.php';
if(isset($_POST['btn-save']))
{
$username = $_POST['username'];
$password = $_POST['password'];
$province = $_POST['province'];


if($crud->create($username,$password,$province))
 {
echo "<script type='text/javascript'>alert('Saved!');</script>";
 }
 else
 {
echo "<script type='text/javascript'>alert('Insertion Failed!');</script>";
 }
}
?>

1 个答案:

答案 0 :(得分:0)

我个人不会将它放在一个大的脚本中,而是将每个脚本放在一个单独的函数中并从同一个函数中调用它们。这将是一种更加面向对象的方式。

像这样:

public function createUser($username, $password, $provence)
{
    createDatabaseUser($username, $password, $provence);
    uploadImages();
}

public function createDatabaseUser($username,$password,$province)
{
    try
    {
        $stmt = $this->db->prepare("INSERT INTO login(username,password,province) VALUES(:username, :password, :province)");
        $stmt->bindparam(":username",$username);
        $stmt->bindparam(":password",$password);
        $stmt->bindparam(":province",$province);
        $stmt->execute();
        return true;
    }
    catch(PDOException $e)
    {
        echo $e->getMessage();  
        return false;
    } 
  }

public function uploadImages()
{
    if(isset($_FILES['files'])){
$query = "INSERT into tish_images(`FILE_NAME`,`FILE_SIZE`,`FILE_TYPE`)
         VALUES(:FILE_NAME,:FILE_SIZE,:FILE_TYPE)";
$stmt  = $DB_con->prepare($query);
$errors= array();
foreach($_FILES['files']['tmp_name'] as $key => $error ){
    if ($error != UPLOAD_ERR_OK) {
        $errors[] = $_FILES['files']['name'][$key] . ' was not uploaded.';
        continue;
    }
    $file_name = $key.$_FILES['files']['name'][$key];
    $file_size = $_FILES['files']['size'][$key];
    $file_tmp  = $_FILES['files']['tmp_name'][$key];
    $file_type = $_FILES['files']['type'][$key];  
    if($file_size > 2097152){
        $errors[] = 'File size must be less than 2 MB';
        continue;
    }
    try{       
        $stmt->bindParam( ':FILE_NAME', $file_name , PDO::PARAM_STR );
        $stmt->bindParam( ':FILE_SIZE', $file_size, PDO::PARAM_STR );
        $stmt->bindParam( ':FILE_TYPE', $file_type, PDO::PARAM_STR );
        $stmt->execute();

        $desired_dir="image_uploads";

        if(is_dir($desired_dir)==false){
            mkdir($desired_dir, 0700);// Create directory if it does not exist
        }
        if(is_file($desired_dir.'/'.$file_name)==false){
            move_uploaded_file($file_tmp,$desired_dir.'/'.$file_name);
        }else{    //rename the file if another one exist
            $new_file=$desired_dir.'/'.$file_name.time();
            move_uploaded_file($file_tmp,$new_file) ;               
        }
    }catch(PDOException $e){
        $errors[] = $file_name . 'not saved in db.';
        echo $e->getMessage();
    }   
}
if(empty($error)){
    echo "Success";
}
}
}