我有一个用于更新记录的代码,它的工作很好,我唯一的问题是,当我试图打乱代码,看看它是否工作,并尝试提交它的警报消息总是显示"成功更新"它应该是"更新失败"无论我尝试它总是显示这个"成功更新"。有人能帮我一下吗?
这是我的代码
class.user.php
public function upload($id,$FILE_NAME,$FILE_SIZE,$FILE_TYPE,$username,$password,$province)
{
$stmt = $this->db->prepare("UPDATE tish_images SET FILE_NAME=:FILE_NAME,FILE_SIZE=:FILE_SIZE,FILE_TYPE=:FILE_TYPE,username=:username,password=:password,province=:province WHERE id=:id");
$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( ":id", $id);
$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->bindParam( ":username", $username);
$stmt->bindParam( ":password", $password);
$stmt->bindParam( ":province", $province);
$stmt->execute();
return true;
$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)
{
echo $e->getMessage();
return false;
}
}
}
update.php
<?php
include_once 'DB.php';
$username = isset($_GET['username']) ? $_GET['username'] : '';
$password = isset($_GET['password']) ? $_GET['password'] : '';
$province = isset($_GET['province']) ? $_GET['province'] : '';
$FILE_NAME = isset($_GET['FILE_NAME']) ? $_GET['FILE_NAME'] : '';
$FILE_SIZE = isset($_GET['FILE_SIZE']) ? $_GET['FILE_SIZE'] : '';
$FILE_TYPE = isset($_GET['FILE_TYPE']) ? $_GET['FILE_TYPE'] : '';
if(isset($_FILES['files'])){
$id = $_GET['id'];
$username = $_POST['username'];
$password = $_POST['password'];
$province = $_POST['province'];
if($crud->upload($id,$FILE_NAME,$FILE_SIZE,$FILE_TYPE,$username,$password,$province))
{
echo "<script type='text/javascript'>alert('Successfully Updated!'); </script>";
}
else
{
echo "<script type='text/javascript'>alert('Updating Failed!'); </script>";
}
}
if(isset($_GET['id']))
{
$id = $_GET['id'];
extract($crud->getID($id));
}
?>
您检查查看$crud->upload()是否为真或假,并显示js msgbox返回并根据您的代码,没有任何东西可以返回真或假。也试着像我这样设置括号,这样更容易读懂。避免使用continue。它所做的只是将脚本继续到下一条语句。
try this: (place session_start();在主索引的最上面)
public function upload($id,$FILE_NAME,$FILE_SIZE,$FILE_TYPE,$username,$password,$province)
{
$stmt = $this->db->prepare("UPDATE tish_images SET FILE_NAME=:FILE_NAME,FILE_SIZE=:FILE_SIZE,FILE_TYPE=:FILE_TYPE,username=:username,password=:password,province=:province WHERE id=:id");
$_SESSION['errors'] = array(); //register an empty session array
foreach($_FILES['files']['tmp_name'] as $key => $error )
{
if ($error != UPLOAD_ERR_OK)
{
$_SESSION['errors'] = $_FILES['files']['name'][$key] . ' was not uploaded.';
//continue;
return FALSE;
}
$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)
{
$_SESSION['errors'] = 'File size must be less than 2 MB';
//continue;
return FALSE;
}
try
{
$stmt->bindParam( ":id", $id);
$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->bindParam( ":username", $username);
$stmt->bindParam( ":password", $password);
$stmt->bindParam( ":province", $province);
$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);
return TRUE;
}
else
{ //rename the file if another one exist
$new_file=$desired_dir.'/'.$file_name.time();
move_uploaded_file($file_tmp,$new_file);
return TRUE;
}
}
catch(PDOException $e)
{
echo $e->getMessage();
return false;
}
}
}