以前取り組んでいたプロジェクトからやり直しました。私の PHP の本と Stack Overflow に関する数人の人の助けを借りて、私は発生していた多くのエラーを取り除くことができました。
今、警告と致命的なエラーが残っています。私は両方のエラーを理解していますが、発生しているエラーを修正する方法がわかりません。誰でも助けてもらえますか?私は誰かにコードを書くように頼んでいるわけではありませんし、私のためにすべてをやってもらっているわけでもありません。正しい方向へのポイントが必要なだけです。
これは警告であり、uploadFile() メソッドのどこかに __construct を配置する必要があるように思えますが、これについてもよくわかりません。
警告: PDO::prepare() [pdo.prepare]: SQLSTATE[00000]: エラーなし: C:\xampp\htdocs\files\upload.php 行 23 で PDO コンストラクターが呼び出されませんでした
第二に、私は何をすべきかについて完全に迷っています。エラーが何を伝えているかは理解していますが、修正するためにどこから始めればよいかわかりません。ここにあります:
致命的なエラー: 24 行目の C:\xampp\htdocs\files\upload.php の undefined メソッド upload::bindParam() の呼び出し
回答を容易にするために提供できる情報が他にある場合は、お知らせください。入手できるように努めます。どんな助けにも感謝します!
アップロード.php
<?php
error_reporting(E_ALL);
require('config.php');
class upload extends PDO
{
public $conURL, $filename, $tmpname, $filesize, $filetype, $file;
public function __construct($config) {
$conURL = "mysql:host=" . $config['host'] . ";dbname=" . $config['db'];
parent::__construct($conURL, $config['user'], $config['pass']);
}
public function uploadFile() {
if ($_FILES['file']['size'] >= 2000000) {
echo "File is too large!";
}
else {
$sth = $this->prepare("INSERT INTO uploads (name, type, size, file) VALUES (?, ?, ?, ?)");
$sth->bindParam(1, $filename);
$sth->bindParam(2, $filetype);
$sth->bindParam(3, $filesize);
$sth->bindParam(4, $file);
$sth->execute();
}
}
}
$upload = new upload($config);
$upload->filename = $_FILES['file']['name'];
$upload->tmpname = $_FILES['file']['tmp_name'];
$upload->filesize = $_FILES['file']['size'];
$upload->filetype = $_FILES['file']['type'];
$upload->file = $_FILES['file'];
$upload->uploadFile();
config.php
<?php
$config = array(
'host' => 'localhost', // db host
'user' => 'root', // db user
'pass' => '', //db pass
'db' => 'files' // db name
);
編集:ここにいる皆さんのおかげで、残っているエラーは1つだけで、次のとおりです。
致命的なエラー: C:\xampp\htdocs\files\upload.php の 43 行目の未定義メソッド stdClass::uploadFile() の呼び出し
編集 2: すべてのエラーは解決されましたが、データベースには何も挿入されていません。