1

以下のコードでは、変数を認識できません$userid。この変数は、ログインしている教師の ID を決定しますが、mysqli コードでは、$useridいつエコーするかを決定できません。しかし、ユーザーが$userid. だから私の質問は、mysqliでなぜそれが見つからないの$useridですか? mysqli setion のコメントを見てくださいbind_param()。ここに問題があります。

以下は、php と mysqli の両方のコードです。

$useridmember.php が情報を含むスクリプトであることを述べましょう。

    <?php
     session_start();

        include('member.php');

    ...

        function PickSession()
        {

            //Get data from database
            $sessionquery = "
                SELECT s.SessionId, SessionName, s.TeacherId
                FROM Session s
                INNER JOIN Session_Complete sc ON sc.SessionId = s.SessionId
                WHERE
                (ModuleId = ? AND Complete = ? AND s.TeacherId = ?)
                ORDER BY SessionName 
                ";
            $complete = 1;

            global $mysqli;
            $sessionqrystmt=$mysqli->prepare($sessionquery);
            // You only need to call bind_param once
            $sessionqrystmt->bind_param("iii",$moduleId, $complete, $userid);//it doesn't recognse $userid
            // get result and assign variables (prefix with db)
            $sessionqrystmt->execute(); 
            $sessionqrystmt->bind_result($dbSessionId,$dbSessionName,$dbTeacherId);
            $sessionqrystmt->store_result();
            $sessionnum = $sessionqrystmt->num_rows();  

echo $userid; //nothing displayed in this echo
    ...

            if ((isset($username)) && (isset($userid))){ //user is successfully logged in

            include('teachername.php');

    ...

        <?php


        ShowAssessment(); // Show information



            }else{ 

    echo "Please Login to Access this Page | <a href='./teacherlogin.php'>Login</a>";

    }

            ?>

member.php スクリプト:

if (isset($_SESSION['teacherid'])) {

      $userid = $_SESSION['teacherid'];

  }

if (isset($_SESSION['teacherusername'])) {

      $username = $_SESSION['teacherusername'];

  }

        ?>
4

4 に答える 4

2

変数を初期化していません$userid。クエリで変数をバインドするための値を設定する必要があります。そうしないとNULL、その変数の値が取得されます。

$userid = "value";
$sessionqrystmt->bind_param("iii",$moduleId, $complete, $userid);

$useridでは変数にアクセスできませんPickSession()。したがって、提案は$useridグローバルとして作成するか、関数のパラメーターとして渡すことです。

于 2013-01-23T12:03:06.847 に答える
1

session_start()が欠けているからかもしれません

于 2013-01-23T12:02:40.480 に答える
0

関数にアクセスできません$userid。できること:

$useridグローバル変数として宣言する(非推奨)

function PickSession() {
    global $userid;
    // and the rest of the function here
}

$useridパラメータとして関数に渡すPickSession

于 2013-01-23T12:03:59.900 に答える
0

PickSession関数では、$userid定義していないため値がありません。たとえば、変数を呼び出すときに変数を関数に渡す必要があります。

function PickSession($userid)
{
    ...
}

// Now call PickSession with the variable assigned:
PickSession($userid);
于 2013-01-23T12:05:49.353 に答える