首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >prepare()未定义

prepare()未定义
EN

Stack Overflow用户
提问于 2012-07-20 03:14:26
回答 2查看 107关注 0票数 0

在过去的两天里,我一直在做一个项目,不管我做了什么,我都会遇到一些错误,或者是一些不起作用的错误。此时,我被告知我正在调用一个未定义的方法: upload:prepare(),这是正确的,因为类被称为upload,语句是$ this ->prepare()....etc等。

我很沮丧,不管我做什么,我都想不出这一点。

classes.php

代码语言:javascript
复制
<?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

代码语言:javascript
复制
<?php
$config = array(
        'host' => 'localhost', // db host
        'user' => 'root', // db user
        'pass' => 'mypassword', //db pass
        'db' => 'files' // db name
);

upload.php

代码语言:javascript
复制
<?php
error_reporting(E_ALL);
require('config.php');
require('classes.php');

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

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-20 03:19:25

您正在尝试调用prepare函数的upload,而不是database。试试这个:

代码语言:javascript
复制
class upload
{
    public $_FILES;

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

Stack Overflow用户

发布于 2012-07-20 03:20:37

我想你是想用database->prepare而不是this->prepare

您需要将upload类作为数据库实例(或者动态创建它)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11572342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档