php - 需要上传图片时出现的问题

标签 php html mysql database pdo

祝大家有美好的一天

我的 php 和 mysql 有问题。一切都工作正常,直到我向数据库添加了新内容,现在当我单击创建时,我的图像出现错误。

以下是我收到的错误:

Notice: Undefined variable: conn in C:\wamp\www\SA-Property Finder\create.php on line 140

Fatal error: Call to a member function lastInsertId() on a non-object in C:\wamp\www\SA-Property Finder\create.php on line 140

这是我的代码:

//START IMAGES

        // insert data
        if ($valid) {
            $pdo = Database::connect();


            $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $sql = "INSERT INTO properties (title,description,area,map,status,type,bedrooms,bathrooms,parking,garage,garden,pool,price,pets,agentnum,agentemail) values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
            $q = $pdo->prepare($sql);
            $q->execute(array($title,$description,$area,$map,$status,$type,$bedrooms,$bathrooms,$parking,$garage,$garden,$pool,$price,$pets,$agentnum,$agentemail));
            Database::disconnect();

        }
       **$last_id = $pdo->lastInsertId();**
       $directory="uploads/";
       $directoryagents="agents/";
$a=0;

foreach ($_FILES['agentfile']['name'] as $nameFile) {
            $ext = pathinfo($nameFile, PATHINFO_EXTENSION);

            if(is_uploaded_file($_FILES['agentfile']['tmp_name'][$a]))
            {
                move_uploaded_file($_FILES['agentfile']['tmp_name'][$a], $directoryagents.$last_id."_".$a.".".$ext);
            }
            $fileandpath = $directoryagents.$last_id."_".$a.".".$ext;

            $pdo1 = Database::connect();
            $pdo1->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $sql1 = "UPDATE properties SET agentimageurl=? WHERE PropertyId=?";
            $q1 = $pdo1->prepare($sql1);
            $q1->execute(array($fileandpath,$last_id));
            Database::disconnect();
        }


foreach ($_FILES['file']['name'] as $nameFile) {


        $ext = pathinfo($nameFile, PATHINFO_EXTENSION);
            if(is_uploaded_file($_FILES['file']['tmp_name'][$a]))
            {
                move_uploaded_file($_FILES['file']['tmp_name'][$a], $directory.$last_id."_".$a.".".$ext);
            }
            $fileandpath = $directory.$last_id."_".$a.".".$ext;

            $pdo1 = Database::connect();
            $pdo1->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $sql1 = "INSERT INTO images (propertyid,imageurl) values(?, ?)";
            $q1 = $pdo1->prepare($sql1);
            $q1->execute(array( $last_id,$fileandpath));
            Database::disconnect();
            $a++;

        }
          header("Location: admin_list.php");
      }

这是第 140 行:

   $last_id = $pdo->lastInsertId();

我只是不明白它工作得很好,似乎看不出我的问题出在哪里。

最佳答案

由于对象 $pdo 不存在于 $valid 上下文之外,我的建议是从 is($valid) 检查内部删除该对象的创建。

$pdo = Database::connect();
// insert data
if ($valid) {
        //$pdo = Database::connect();


        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        ...


}

你也应该这样做

Database::disconnect();

将其放在 if 检查之后。

希望有帮助。

关于php - 需要上传图片时出现的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30137221/

相关文章:

php - 我怎样才能输入这个数组

java - 在broadleaf安装中无法在mysql中创建表

phpStorm - 配置 xDebug

javascript - 如何创建 Pixi.js 烟雾面具?

php - 在 MySQL 中添加日期周的索引

html - 将 DIV 居中对齐并彼此相邻

html - 如何从shell脚本中的html表中提取数据?

php - 更改codeigniter中的密码模块

php - 循环遍历sql查询的结果

php - 如何在使用 UNION 时删除重复记录