3

functions.php に関数のリストがあります。Mysqlを学習したばかりなので、 Mysql から Mysqliアップグレードしています。

トップレベルのconnect.phpファイルで接続を宣言します。最初に必要なファイル。

とにかく、私のすべての関数が mysql_query("QUERY") を使用しており、それは常に正常に機能していました。今、私はそれらをすべて次のように変更しました:

$con->query("QUERY") // ($con is my connection variable)

今、私は

致命的なエラー: 241 行目の C:\wamp\www\PHP\functions.php の非オブジェクトに対するメンバー関数 query() の呼び出し

ファイル全体で変数を宣言している場合、クエリを実行できる理由がわかりません。どこからでもアクセスできるはずですが、よくわかりません。これは、これを修正できるまで私のウェブサイトを保留にしています。functions.php のサンプル関数を次に示します。

function getSiteName()
{
    $row = $con->query("SELECT * FROM siteinfo")->fetch_array();
    return $row["siteName"];
}

私の接続:

global $con ;
$con = new mysqli("localhost", "itunes89", "XXXX","projectanvil") or die("Sorry, were having server connection issues. Please try again later.");
4

3 に答える 3

11

それは可変範囲の問題です。に渡す必要があり$connますgetSiteName():

function getSiteName($con) {
    $row = $con->query("SELECT * FROM siteinfo")->fetch_array();
    return $row["siteName"];
}

$name = getSiteName($con);

または、コンストラクター注入でクラスを使用します。

class MyThing
{
    protected $con;

    public function __construct($con) {
        $this->con = $con;
    }

    public function getSiteName() {
        $row = $this->con->query("SELECT * FROM siteinfo")->fetch_array();
        return $row["siteName"];
    }
}

$obj = new MyThing($con);
$name = $obj->getSiteName();

クラス全体で$this->con、接続にアクセスするために使用できます。

于 2013-04-15T06:47:18.153 に答える
0

$con オブジェクトを定義しますか

<?php
// connect to the server
$conn = new mysqli('localhost', 'root', 'pass', 'dbname');

// check connection
if (mysqli_connect_errno()) {
  exit('Connect failed: '. mysqli_connect_error());
}
?>
于 2013-04-15T06:46:39.593 に答える