在过去的两天里,我一直在做一个项目,不管我做了什么,我都会遇到一些错误,或者是一些不起作用的错误。此时,我被告知我正在调用一个未定义的方法: upload:prepare(),这是正确的,因为类被称为upload,语句是$ this ->prepare()....etc等。
我很沮丧,不管我做什么,我都想不出这一点。
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();发布于 2012-07-20 03:19:25
您正在尝试调用prepare函数的upload,而不是database。试试这个:
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-20 03:20:37
我想你是想用database->prepare而不是this->prepare?
您需要将upload类作为数据库实例(或者动态创建它)。
https://stackoverflow.com/questions/11572342
复制相似问题