2016-05-07 2 views
-1

私はウェブサイトをプログラミングしています。私の現在の仕事はmysqlサーバにテキストを保存して管理者としてログインし、表示されたテキストをオンラインで編集することです。PHP mysqliはクエリ機能を使用すると致命的なエラーになります

私はすでにこれまでにすべてのものが動作していますが、mysql関数を使用してこれを行っています。 mysqliのすべての機能をmysqliのものに変更しました。ここで

は私がサーバーに接続する必要がどこので、私は他のスクリプトでこれを含めることができます作成​​した私のmysql_connect.phpです:

mysql_connect.php

これは私私のblock1_aboutme.phpファイルですサーバーに接続し、そこからすべてのテキストを要求して、私の「私について」ページに表示することができます。これは意図したとおりに動作し、ページにテキストを正しく表示します。

block1_aboutme.php

問題は、私は管理者としてログインしたときに、ログイン検証の一部は、私のclass.login.phpスクリプトに以下のコードです。できるだけ早く私がエラーをログインし、自分のaboutmeページに移動していて発生します。

Fatal error: Uncaught Error: Call to a member function query() on unknown in C:\xampp\htdocs\mywebsites\LuPaw\admin\class.login.php:84 Stack trace: #0 C:\xampp\htdocs\mywebsites\LuPaw\admin\class.login.php(73): Login->verifyDatabase() #1 C:\xampp\htdocs\mywebsites\LuPaw\admin\class.login.php(36): Login->verifySession() #2 C:\xampp\htdocs\mywebsites\LuPaw\aboutme.php(42): Login->isLoggedIn() #3 {main} thrown inC:\xampp\htdocs\mywebsites\LuPaw\admin\class.login.php on line 84

このエラーは$data = $db-> query("select stuff")関数である84行を参照。

何とかここでは動作しませんが、ほぼ同じコード行がblock1_aboutmeスクリプトで動作します。

私はここに3番目のスクリプトのリンクを配置しますが、私はまだ1つの投稿に3つのリンクを配置する評判のパイントを持っていないので、私はできません。コメントに3番目の画像を投稿します。

私はすでにいくつか試してみました。たとえば、 "$ path"をエコーアウトすると、正しいパスが表示されます。つまり、$ dbは実行可能な変数になります。

誰でも問題が表示されますか?

+0

これはclass.login.phpです http://postimg.org/image/xxb7uw6pt/ – LuPaw

答えて

0

include_onceをクラスメソッドに使用しないでください。スクリプト実行中の任意の場所にファイルが既に含まれていると、ファイルが含まれないため、代わりにincludeを使用してください。 これは最高の解決策ではありませんが、DBクラスをシングルトンとして実装し、クエリを実行するためにデータベースインスタンスを取得することをお勧めします。

+0

私はこれを今までに含めて変更しました:Dこれは決して考えなかったことありがとうございます: ) 私はdbクラスも実装しようとしますが、そうすることのメリットは何ですか?申し訳ありませんが、もしそれがばかげた質問であれば、私はあまりうまくいきません^^ – LuPaw

+0

OOPの利点はこのスレッドの外ですが、私はあなたにシングルトンのパターンの使用が常に'mysql_connect.php'ごとに新しいインスタンスをインスタンス化するのではなく、同じ実行中に同じmysql接続が含まれています –

+0

ああ大丈夫です。私はそれを読んで、そのようにしてみてください:) あなたの答えをありがとう;) – LuPaw

関連する問題