【问题标题】:Problems when images need to upload图片需要上传时的问题
【发布时间】:2015-07-20 03:50:35
【问题描述】:

祝大家今天好

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

以下是我遇到的错误:

注意:未定义的变量:C:\wamp\www\SA-Property 中的 conn Finder\create.php 在第 140 行

致命错误:在非对象上调用成员函数 lastInsertId() 在 C:\wamp\www\SA-Property Finder\create.php 第 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();

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

【问题讨论】:

  • 我认为问题在于,当 $valid 不正确时,您不会创建 $pdo 对象,因此您不能使用该方法。
  • 感谢您的回复。那么我应该使用什么方法呢?我对这一切有点陌生哈哈仍在学习
  • 我添加了一个答案。如果您必须执行多个操作,我建议您避免创建不同的 PDO 对象和多次连接/断开连接。
  • 但是我如何得到它然后单独加载?
  • 你应该用OOP代码替换你的程序代码,但如果你刚开始编程,这并不那么简单。

标签: php html mysql database pdo


【解决方案1】:

由于对象 $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 检查之后。

希望对你有帮助。

【讨论】:

  • 感谢您的回复,它不再给我错误,但是当我点击创建时它没有显示在我的列表中。
  • “列表”是什么意思?
  • 看我为房地产经纪人创建了一个房产,所以在我填写了房产的所有信息然后我点击创建然后在管理面板中它应该显示我创建的列表,但是问题不存在问题在于创建,在第 140 行
  • $last_id 包含什么?调试它。逐步调试所有代码,否则几乎每一行都会有一个接一个的问题:) 我只是回答了你的问题,未定义的变量和对非对象的调用:)
猜你喜欢
  • 2023-03-10
  • 2015-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-03
  • 2011-04-23
相关资源
最近更新 更多