文件上传后出现意外结果

时间:2012-03-04 08:36:59

标签: php database file-upload

此代码用于更新数据库。它更新所有内容甚至上传图像成功,但图像上传后整个页面变空,只有“数组()”显示在顶部。那是为什么?

<?php
if(!isset($_GET["prid"])){
    header("Location: prjedit.php");
}
else {
    $prid = intval($_GET["prid"]);
    $sqlprj = "SELECT * FROM projects WHERE id = ? LIMIT 1";
    $statement = $db->prepare($sqlprj);
    $statement->execute(array($prid));
    $project = $statement->fetchObject();
    //submitted form
    if( (isset($_POST["title"])) && (isset($_POST["details"])) ) {
            $title = $_POST['title'];
            $desc = $_POST['descr'];
            $details = $_POST['details'];
            if(!empty($_FILES['image']['name'])) {
                //update image
                $file = basename($_FILES['image']['name']);
                $dir = "projects/";
                $target_path = $dir . basename($_FILES['image']['name']);
                $tempname = $_FILES['image']['tmp_name'];
                if(!file_exists($target_path)) {
                        if(move_uploaded_file($tempname, $target_path)) {
                                $sqlimg = "UPDATE projects SET image = ? WHERE id = ?";
                                $statement = $db->prepare($sqlimg);
                                $statement->execute(array($file, $prid));
                                if($statement->rowCount() > 0) {
                                    try {
                                        chdir('./projects/');
                                        unlink($project->image);
                                        chdir('..'); 
                                    }
                                    catch (Exception $e) {
                                        $message = "Sorry image delete failed ";
                                        echo $e->getMessage();
                                    }   
                                } 
                                else {
                                    die ($db->errorInfo());
                                }
                        }
                        else {
                                $message = "Sorry Image update failed";
                        }
                            } 
                            else {
                                    $message = "Sorry this image already exists but text";
                            }
                }
            // update project texts
            $sqlupd = "UPDATE projects SET title = ?, descinfo = ?, details = ? WHERE id = ?";
            $statement = $db->prepare($sqlupd);
            $statement->execute(array($title, $desc, $details, $prid));
            if($statement->rowCount()) {
                    $message = " Saved successfully";
            }
            else {
                    die($db->errorInfo());
            }
        }
}
?>

1 个答案:

答案 0 :(得分:0)

查看Pdo::codeInfo documentation,它会返回数组。 当你写die($db->errorInfo());时,它会尝试显示这个数组。

根据文档本身的建议,您可以尝试print_r($db->errorInfo()); die;并查看会发生什么。