php - undefined index 和 undefined variable ,但两者都已定义! (我认为....)

标签 php html oop pdo

我正在使用下面的 HTML 表单将文件传递给 PHP 进行处理。但是 PHP 说索引未定义。

同样,我在 config.php 中定义的一个变量显示为未定义。

我在这里错过了什么?

classes.php

<?php
require('config.php');
error_reporting(E_ALL);
/*
 * Classes required by the script
 * 
 */

class database extends PDO
{
    public $conURL;

    public function __construct($config) {
        $conURL = "mysql:host=" . $config['host'] . ";dbname=" . $config['db'];
        try {
         parent::__construct($conURL, $config['user'], $config['pass']);
        } catch (PDOException $e) {
            $e->getMessage();
        }
    }       
}

class upload
{
    public $_FILES;

    public function uploadFile() {
        if ($_FILES['file']['size'] >= 2000000) {
           echo "File is too large!";
        }
        elseif (isset($_FILES['file'])) {
           $stmt = $this->prepare("INSERT INTO upload (name, type, size, content) VALUES (?, ?, ?, ?)");
           $stmt->execute(array($_FILES['file']['name'], $_FILES['file']['type'], $_FILES['file']['size'], $_FILES['file']['file']));
        }
    }
}

config.php

<?php
$config = array(
        'host' => 'localhost', // db host
        'user' => 'root', // db user
        'pass' => 'mypassword', //db pass
        'db' => 'files' // db name
);

upload.php

<?php
error_reporting(E_ALL);
require('config.php');
require('classes.php');

$dbh = new database($config);
$upload = new upload();
$upload->uploadFile();

HTML 格式

<form name="uploaddb" action="upload.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="2000000" />
<input type="file" name="file" />
<br/>
<input type="submit" name="submit" value="Upload!" />
</form>

作为引用,以下是错误:

Notice: Undefined variable: config in /Applications/MAMP/htdocs/files/classes.php on line 28

Notice: Undefined index: file in /Applications/MAMP/htdocs/files/classes.php on line 34

最佳答案

我没有测试过,但这是我认为错误的地方:

  1. 不需要在类文件中使用 config.php。您已经将 $config 传递给 database 构造函数。
  2. 不要在你的类中声明$_FILES,它是一个随处可用的超全局变量。

我还建议您将类(class)名称大写。

更新

抱歉,我现在无法将所有内容放在一起。这是我看到的另外几个问题:

  1. $_FILES['file'] 上没有file 键。不确定您要查找哪个 key 。
  2. 您不能像现在这样在类upload 上使用数据库方法。 $this->prepare 不会导致错误吗?该类不扩展 PDO。也许您应该在 db 类中使用上传方法。

关于php - undefined index 和 undefined variable ,但两者都已定义! (我认为....),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11572480/

相关文章:

javascript - 如何将 JavaScript 添加到 FPDF 中?

php - 使用 yii2 在网站底部出现奇怪的错误 #32

php - 附近位置和匹配 key 位置

javascript - 我的颜色应用程序的 jQuery 更好的方式?

javascript - 动态添加后图像不显示

php - 什么是Ingram micro API服务集成,有Ingram micro API服务的文档吗?

javascript - 确定带有类的部分是否可见,jQuery

c# - 如何将标志属性与从枚举继承的类一起使用

javascript - 关于 Javascript 原型(prototype)的范围求和查询问题(Leetcode)

javascript - Javascript (ES6) 中的静态变量继承