外部クラスファイルを読みこんで実行させたいのですが、次のエラーになってしまいます。
------------------------エラー文--------------------------------
Fatal error: Cannot instantiate non-existent class: mysql
(訳)
Fatal error~致命的な
instantiate~定数に実数を割り当てる
existent~存在する、現在の
----------------------------------------------------------------
エラーが出てる行数のコードは
$mysql = new MySQL;
の文です。
下記がソースです。
一応require_once("mysql.php")の呼び出しは成功しています。
mysql.php自体をブラウザで直接呼出したところ、エラーはでません。
有識者の方いらっしゃいましたらご教示宜しくお願いします。
---------------------ソースコード-------------------------------
<?php
session_start();
//----------------------------------------
// ■ MySQLクラスファイルの取り込み
//----------------------------------------
require_once("mysql.php");
//----------------------------------------
// ■ 変数初期化
//----------------------------------------
$sql = "";
$sql2 = "";
$sql3 = "";
$error = "";
//----------------------------------------
// ■ 変数定義
//----------------------------------------
$login_id = $_SESSION["login_id"];
$mail_address = $_SESSION["mail_address"];
$name = $_SESSION["girl_name"];
$age = $_SESSION["age"];
$gyousyu = $_SESSION["gyousyu"];
$tiiki3 = $_SESSION["tiiki3"];
$keikenn = $_SESSION["keikenn"];
$pic = "";
$koukai = $_SESSION["koukai"];
$nissuu = $_SESSION["nissuu"];
$job = $_SESSION["job"];
$address = $_SESSION["address"];
$freeword = $_SESSION["freeword"];
//----------------------------------------
// □:MYSQLクラスインスタンスの作成
//----------------------------------------
$mysql = new MySQL;
・
・
・
---------------------------------------------------------------
No.2ベストアンサー
- 回答日時:
No.1です。
載せていただいたmysql.phpとあわせて実行してみましたがこちらの環境では問題なく動作します。
mysql.phpと呼び出し元のプログラムは同じディレクトリ(又はmysql.phpをパスが切ってある場所に配置)にありますか?
また、Cannot instantiate non-existent class・・・というエラーは継承や呼び出しの順序で発生することがあるようです。
この回答への補足
require_once("mysql.php");で外部クラスファイルを読み込むのでは無く、呼び出し元に直接mysql.phpの内容を記述したら動作するようになりました(^^;)
しかし未だに解らないのですが、
別のテストとして外部ファイルmysql.phpに
echo "こんにちは";
と記述してやると呼び出し元プログラムでも『こんにちは』
と出ていたので、require_once("mysql.php");自体は動作していたハズだと思うのです。なので、
ご指摘の
>『mysql.phpと呼び出し元のプログラムは同じディレクトリ(又はmysql.phpをパスが切ってある場所に配置)にありますか?』
は正常だと思いますし、
>『Cannot instantiate non-existent class・・・というエラーは継承や呼び出しの順序で発生することがあるようです』
も、今回のrequire_once("mysql.php");を直接記述にすり替えたテストでは正常な点を考えると、継承や呼び出しの順序も合っていたのでは無いかと思うのです。。
当然他にも何か考えられる原因はあるのだとは思いますが・・・
でも、とりあえずは動作するようになりましたので、安心しました☆
色々と突っ込んでお聞かせ頂きましたが、ご親切に対応して下さったNatsumickeさんありがとうございます★☆
今回のすり替えのテスト内容に対して、差し当って何かお考えがありましたらご返信お待ちしております。
本当にありがとうございます♪♪
No.1
- 回答日時:
こんにちは。
mysql.phpにあるクラス名は「MySQL」で間違いありませんか?
また、インスタンスを作成するときは
mysql = new MySQL();
のように()を記述します。
この回答への補足
ご指摘ありがとうございます☆
早速『mysql = new MySQL();』と記述を訂正して実行してみたのですが、やはり同じエラーが出てしまいます。
mysql.phpにあるクラス名も「MySQL」で間違いないのですが・・・
mysql.phpのソースも公開しますので、何かお分かりでしたらお助け下さい。宜しくお願いします!
------------------mysql.php-------------------------------------
<?php
//======================================================================
// ■:MySQL クラス
//======================================================================
class MySQL{
//---------------------------
// □:変数の宣言
//---------------------------
var $m_con;
var $m_HostName = "";
var $m_UserName = "";
var $m_Password = "";
var $m_Database = "";
var $m_Rows = 0;
//---------------------------
// □:コンストラクタ
//---------------------------
function MySQL(){
$filename = "mysql.ini";//<==Windows
$fp = fopen($filename,"r");
if (!$fp){
die("mysql.iniファイルが存在しません。");
}else{
$this->m_HostName=trim(fgets($fp));
$this->m_UserName=trim(fgets($fp));
$this->m_Password=trim(fgets($fp));
$this->m_Database=trim(fgets($fp));
}
fclose($fp);
//MYSQLへ接続
$this->m_con = mysql_connect($this->m_HostName,$this->m_UserName,$this->m_Password);
if (!$this->m_con){
die("MYSQLの接続に失敗しました。");
}
//データベースを選択
if (!mysql_select_db($this->m_Database,$this->m_con)){
die("データベースの選択に失敗しました。DB:{$this->m_Database}");
}
}
//---------------------------
// SQLクエリの処理
//---------------------------
function query($sql){
$this->m_Rows = mysql_query($sql,$this->m_con);
if (!$this->m_Rows){
die("MySQLでエラーが発生しました。<br><b>{$sql}</b><br>" .mysql_errno().": ".mysql_error());
}
return $this->m_Rows;
}
//---------------------------
// 検索結果をfetch
//---------------------------
function fetch(){
return mysql_fetch_array($this->m_Rows);
}
//---------------------------
// 変更された行の数を得る
//---------------------------
function affected_rows(){
return mysql_affected_rows();
}
//---------------------------
// 列数
//---------------------------
function cols(){
return mysql_num_fields($this->m_Rows);
}
//---------------------------
// 行数
//---------------------------
function rows(){
return mysql_num_rows($this->m_Rows);
}
//---------------------------
// 検索結果の開放
//---------------------------
function free(){
mysql_free_result($this->m_Rows);
}
//---------------------------
// MySQLをクローズ
//---------------------------
function close(){
mysql_close($this->m_con);
}
//---------------------------
// エラーメッセージ
//---------------------------
function errors(){
return mysql_errno().": ".mysql_error();
}
//---------------------------
// エラーナンバー
//---------------------------
function errorno(){
return mysql_errno();
}
}
?>
---------------------------------------------------------------
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP php 確認表示画面で値をSESSIONから取り出す理由の解釈は正しいでしょうか? 1 2023/06/09 17:39
- PHP php 入力画面から確認表示画面へ情報の受け渡しについて。 1 2023/06/07 18:00
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- その他(プログラミング・Web制作) mariadbでのエラー 1 2022/11/15 12:31
- MySQL MySQLのテーブル作成でハイフン - は使用できないのでしょうか? 2 2022/10/21 16:50
- PHP PHPで入力フォームでデータを確認表示画面まで送る流れを日本語で理解したいのです。 1 2023/05/29 19:12
- MySQL テーブル作成です。どこかのスペルが間違っているか記号など スペースかな? 1 2022/10/01 05:08
- MySQL 何にかが違うから エラーなんでしょうね! 2 2022/09/18 05:28
- その他(パソコン・周辺機器) dvd書き込めない 5 2022/03/22 19:06
- MySQL MySQL,JavaScript,PHPコードの結果を表示する方法を教えてください。 1 2023/02/13 17:49
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MeCabの結果をWindows+PHPで取...
-
接続ができません
-
SQLのVARCHARとVARCHAR2の違い
-
副問合せにLIKE文を使う方法は...
-
ERROR 1045 (28000) (using pas...
-
mysqlへのインポート処理がうま...
-
MySQLカラム名は日本語と英数字...
-
ODP.NETのバージョン確認
-
DB内の日本語データがPHPで取得...
-
INT型は金額の型に使用するべき...
-
参考書に従って入力したつもり...
-
Btrieveのコンバートしたいので...
-
mysql+php リストボックスにつ...
-
ポート3306へつながらず、MySQL...
-
プライマリーキーの昇順でソー...
-
MySQLの型のサイズ指定で速度は...
-
VBAで変数内に保持された二次配...
-
like句を使って日本語を検索す...
-
RPMのmysqlとmysql-serverの違い
-
MAX()でENUMの内部番号が最大の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
クラスファイルでエラーが出て...
-
mysql_real_escape_string?
-
phpとmysqlを使っています。
-
PHPのサンプルコードが意図した...
-
ページング実装で2ページ目以...
-
Flash8のユニコードについて。...
-
OpnePNEの構築において
-
php mysqlの文字化け(レンタル...
-
php+mysqlでINSERTで文字化けし...
-
Linuxで、Pearコマンドが使えな...
-
mysqliについて
-
for($i=1; $i<hoge; $i++)
-
mySQLに詳しい兄貴来てください
-
mysql_queryでのdelimiterの設...
-
PHP でMysqlを使用して日本語を...
-
FORMからPHP処理
-
イメージデータを文字列に変換...
-
mysqlでphpinfoと実際のバージ...
-
Mysql&PHPのアップグレードに...
-
PHPからmySQLへINSERT文の実行
おすすめ情報