0

さて、私は自分のWebサイトをmysqliに更新する作業をしていますが、db接続用のDB.phpインクルードに問題があります。

したがって、私のdb.phpは次のようになります。

<?php
$username="usern";
$server="server";
$password="pwd";
$database="db";

//MySQLi methods
$mysqli = new mysqli($server, $username, $password, $database)  or trigger_error ( mysqli_connect_errno().mysqli_connect_error() );
?>

注:SQLエラーの出力はデバッグ用です。SQLおよび詳細エラーの出力は適切な方法ではないことに注意してください;)

とにかく、それでうまくいきます。

db.phpファイルをmysqliimに更新した後、それを使用するすべてのページで問題が発生します。基本的に、インクルードを使用しても、21行目の\ display_functions.phpで次のエラーmysqliが発生します。致命的なエラー:21行目のr \ include \ display_functions.phpの非オブジェクトでメンバー関数query()を呼び出す

そのファイルの関連部分は次のとおりです。

function showConfig ($configID)
{
    date_default_timezone_set('America/Denver');
    require_once($_SERVER["DOCUMENT_ROOT"] . "/includes/DB.php");
    $tbl_name="avr";
    // Get information from DB for display    
    $configQuery="SELECT * FROM $tbl_name WHERE configID=$configID";
    $configResult=$mysqli->query($configQuery);
  <some more code>
}

これがすべてmysqlであったとき、それは機能しましたが、今は機能せず、Imは理由がよくわかりません。includeステートメントは、指定されたファイルからすべてを取り込むことになっていると思いましたが、この関数(およびそのような他の関数)を機能させる唯一の方法は、基本的にDB.phpのコンテンツを関数内に配置することです。もちろん、これはひどい習慣です。

また、まだこのすべてを学んでいるので、この無知な質問を許してください、しかしそれは今週末のタイムゾーンの変更でのみ問題になりました、私はデフォルトのタイムゾーン関数をどのように設定するので、すべてにそれを入れる必要はありませんか?

4

1 に答える 1

0

関数内の $mysqli にはローカル スコープがあります。それは同じ変数ではありません。$mysqli をパラメーターとして渡す必要があります

function showConfig ($configID, $mysqli)

または関数内でグローバル宣言を使用します

function showConfig ($configID)
{
    global $mysqli;
于 2013-03-13T21:24:16.420 に答える