0

過去 2 日間、私はプロジェクトに取り組んでいましたが、何をしようとしても、何らかのエラーが発生するか、何かが機能しません。この時点で、upload:prepare() という未定義のメソッドを呼び出していると言われました。これは true です。これは、クラスが upload と呼ばれ、ステートメントが $this->prepare()....etc であるためです。 .

何をやってもこれが分からなくてイライラしています。

クラス.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
);

アップロード.php

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

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

2 に答える 2

0

ではなく、のprepare関数を呼び出そうとしています。これを試して:uploaddatabase

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']));
        }
    }
}
于 2012-07-20T03:19:25.657 に答える
0

database->prepare代わりに使うつもりだったと思いますthis->prepareか?

アップロードクラスをデータベースのインスタンスに取得する(またはオンザフライで作成する)必要があります。

于 2012-07-20T03:20:37.400 に答える