Php 文件上载后出现意外结果

Php 文件上载后出现意外结果,php,database,file-upload,Php,Database,File Upload,此代码用于更新数据库。它更新了所有内容,甚至成功上载了图像,但在图像上载后,整个页面变为空白,顶部只显示“Array()”。为什么呢 <?php if(!isset($_GET["prid"])){ header("Location: prjedit.php"); } else { $prid = intval($_GET["prid"]); $sqlprj = "SELECT * FROM projects WHERE id = ? LIMIT 1"; $

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

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

查看,它返回一个数组。 当你写
die($db->errorInfo())时它将尝试显示此数组


正如文档本身所建议的,您可以尝试
print\r($db->errorInfo());死亡并查看发生了什么。

哦,谢谢:)它正在显示数组([0]=>00000[1]=>[2]=>)尝试显示来自所有
die()的不同消息,以查看代码失败的位置。这不是一个SQL错误,您确定混合了$\u POST和$\u GET变量吗?(我知道这是可能的,但不确定您的表单是什么样子的。)错误来自上次更新部分,其中$sqlupd=“updateprojects SET title=?,descinfo=?,details=?where id=?”;但是如果我不上传图片,效果会很好。这不是一个错误。数据库中没有具有此ID的行。尝试显示此id并在数据库中手动检查是否存在现有行。Opps,我得到了它,将完全相同的信息保存到数据库中的同一行中会产生0行受影响的结果,如果没有为更新选择新图像,我的代码也会这样做:)