Php 如何检索只属于指定用户的数据?

Php 如何检索只属于指定用户的数据?,php,mysql,sql,function,Php,Mysql,Sql,Function,我得到了一个名为summary的页面,该页面基本上显示了他们参加的所有考试的用户列表以及他们花费的时间等。我试图做的只是根据用户id提取数据。因此,如果我有一个叫simon的人和另一个叫mark的人,我不希望simon看到mark的数据。只向用户展示他们拥有的东西 这是我的职责: function get_student_summary () { $data = array(); $result = mysql_query("SELECT a.*,b.*,c.*,d.*,e.*

我得到了一个名为summary的页面,该页面基本上显示了他们参加的所有考试的用户列表以及他们花费的时间等。我试图做的只是根据用户id提取数据。因此,如果我有一个叫simon的人和另一个叫mark的人,我不希望simon看到mark的数据。只向用户展示他们拥有的东西

这是我的职责:

function get_student_summary () {
    $data = array();

    $result = mysql_query("SELECT a.*,b.*,c.*,d.*,e.* FROM mock_exam_quiz a, mock_exam_student_summary b, mock_exam_users c, mock_exam_questions d, mock_exam_category e WHERE a.quiz_id = b.exam_id AND c.user_id = b.user_id AND d.question_id = b.question_id AND e.category_id = b.category_id");

    while ($row = mysql_fetch_assoc($result)) {
        $data [] = $row;
    }

    return $data;
} 
这是用户将如何在摘要页面上查看考试详细信息的一个片段

下图是我存储所有数据的数据库表的屏幕截图。如果您查看用户id,则有两个不同的用户,正如我所提到的,我希望用户看到属于他们的一个。我不想向其他用户显示任何其他用户的数据


如果我把任何人弄糊涂了,或者没有详细解释这个问题,我很抱歉,但是如果你有任何问题,请一定要问。在过去的几天里,我一直在解决这个问题,非常感谢你们的帮助

只需在查询中指定一个用户id即可

$user_id = 71;
$result = mysql_query("SELECT a.*,b.*,c.*,d.*,e.* FROM mock_exam_quiz a, mock_exam_student_summary b, mock_exam_users c, mock_exam_questions d, mock_exam_category e WHERE a.quiz_id = b.exam_id AND c.user_id = b.user_id AND d.question_id = b.question_id AND e.category_id = b.category_id AND b.user_id = ".$user_id);
或者迭代并将其全部包含在一个带有子数组的数组中

<?php

function get_student_summary() {
    $userList = array();
    $data = array();

    $users = mysql_query("SELECT user_id FROM mock_exam_student_summary");

    while ($row = mysql_fetch_assoc($users)) {
        $userList[] = $row;
    }

    foreach (array_unique($userList) as $user) {

        $tempData = array();

        $result = mysql_query("SELECT a.*,b.*,c.*,d.*,e.* FROM mock_exam_quiz a, mock_exam_student_summary b, mock_exam_users c, mock_exam_questions d, mock_exam_category e WHERE a.quiz_id = b.exam_id AND c.user_id = b.user_id AND d.question_id = b.question_id AND e.category_id = b.category_id AND b.user_id = '".$user."'");

        while ($row = mysql_fetch_assoc($result)) {
            $tempData[] = $row;
        }

        array_push($data, $tempData)

    }

    return $data;
}

$list = get_student_summary();

// Would Return In Theory
/*
$list = Array(
    Array(

        quiz_name
        category_name
        etc.

        ),
    Array(

        quiz_name
        category_name
        etc.

        ),
    Array(

        quiz_name
        category_name
        etc.

        ),
    )
*/

?>

只需在查询中指定一个用户id即可

$user_id = 71;
$result = mysql_query("SELECT a.*,b.*,c.*,d.*,e.* FROM mock_exam_quiz a, mock_exam_student_summary b, mock_exam_users c, mock_exam_questions d, mock_exam_category e WHERE a.quiz_id = b.exam_id AND c.user_id = b.user_id AND d.question_id = b.question_id AND e.category_id = b.category_id AND b.user_id = ".$user_id);
或者迭代并将其全部包含在一个带有子数组的数组中

<?php

function get_student_summary() {
    $userList = array();
    $data = array();

    $users = mysql_query("SELECT user_id FROM mock_exam_student_summary");

    while ($row = mysql_fetch_assoc($users)) {
        $userList[] = $row;
    }

    foreach (array_unique($userList) as $user) {

        $tempData = array();

        $result = mysql_query("SELECT a.*,b.*,c.*,d.*,e.* FROM mock_exam_quiz a, mock_exam_student_summary b, mock_exam_users c, mock_exam_questions d, mock_exam_category e WHERE a.quiz_id = b.exam_id AND c.user_id = b.user_id AND d.question_id = b.question_id AND e.category_id = b.category_id AND b.user_id = '".$user."'");

        while ($row = mysql_fetch_assoc($result)) {
            $tempData[] = $row;
        }

        array_push($data, $tempData)

    }

    return $data;
}

$list = get_student_summary();

// Would Return In Theory
/*
$list = Array(
    Array(

        quiz_name
        category_name
        etc.

        ),
    Array(

        quiz_name
        category_name
        etc.

        ),
    Array(

        quiz_name
        category_name
        etc.

        ),
    )
*/

?>

您需要做的是通过函数传递ID,并在查询中使用该ID

您的函数将如下所示:

function get_student_summary ($id) {
    $data = array();

    $result = mysql_query("SELECT a.*,b.*,c.*,d.*,e.* FROM mock_exam_quiz a, mock_exam_student_summary b, mock_exam_users c, mock_exam_questions d, mock_exam_category e WHERE a.quiz_id = b.exam_id AND c.user_id = b.user_id AND d.question_id = b.question_id AND e.category_id = b.category_id AND c.user_id='".$id"'");

    while ($row = mysql_fetch_assoc($result)) {
        $data [] = $row;
    }

    return $data;
} 
您会注意到在查询的末尾,我在其中放置了
和c.user_id='.id'
。我已经很长时间没有使用PHP了,但我认为您也应该使用
mysqli
pdo
进行查询

编辑:

所以当你这样做的时候:


get_student\u summary($id)as$r
您还应该从这里传入此人的id。我想象有人在进入此页面时单击了一个按钮,因此在该按钮上传递该按钮单击即可进入该页面。

您需要做的是通过函数传递ID,并在查询中使用该ID

您的函数将如下所示:

function get_student_summary ($id) {
    $data = array();

    $result = mysql_query("SELECT a.*,b.*,c.*,d.*,e.* FROM mock_exam_quiz a, mock_exam_student_summary b, mock_exam_users c, mock_exam_questions d, mock_exam_category e WHERE a.quiz_id = b.exam_id AND c.user_id = b.user_id AND d.question_id = b.question_id AND e.category_id = b.category_id AND c.user_id='".$id"'");

    while ($row = mysql_fetch_assoc($result)) {
        $data [] = $row;
    }

    return $data;
} 
您会注意到在查询的末尾,我在其中放置了
和c.user_id='.id'
。我已经很长时间没有使用PHP了,但我认为您也应该使用
mysqli
pdo
进行查询

编辑:

所以当你这样做的时候:


get_student\u summary($id)as$r
您还应该从这里传入此人的id。我想象有人在进入此页面时单击了一个按钮,因此在该按钮上传递该按钮,然后单击以进入该页面。

您可以通过在函数中传递id参数并在sql where子句中使用id来获取单个学生的详细信息:

get_student_detail ($id){
   global $db;//$db is your database connection
   $singlestudent=array();
   $result = mysql_query("SELECT a.*,b.*,c.*,d.*,e.* FROM mock_exam_quiz a,
                          mock_exam_student_summary b, mock_exam_users c, 
                          mock_exam_questions d, mock_exam_category e 
                          WHERE a.quiz_id = b.exam_id AND c.user_id = b.user_id 
                          AND d.question_id = b.question_id 
                          AND e.category_id = b.category_id AND b.user_id='$id'", $db);
   while($data = mysql_fetch_assoc($result)):
      $singlestudent[] = $data;
   endwhile;  
   return $singlestudent;
}
现在您可以通过以下方式拨打电话:

get_student_detail(12);//Assigning one student whose id = 12;

注意:不要使用depracated mysql扩展,请使用mysqli或PDO。

您可以通过在函数中传递id参数并在sql where子句中使用id来获取单个学生的详细信息:

get_student_detail ($id){
   global $db;//$db is your database connection
   $singlestudent=array();
   $result = mysql_query("SELECT a.*,b.*,c.*,d.*,e.* FROM mock_exam_quiz a,
                          mock_exam_student_summary b, mock_exam_users c, 
                          mock_exam_questions d, mock_exam_category e 
                          WHERE a.quiz_id = b.exam_id AND c.user_id = b.user_id 
                          AND d.question_id = b.question_id 
                          AND e.category_id = b.category_id AND b.user_id='$id'", $db);
   while($data = mysql_fetch_assoc($result)):
      $singlestudent[] = $data;
   endwhile;  
   return $singlestudent;
}
现在您可以通过以下方式拨打电话:

get_student_detail(12);//Assigning one student whose id = 12;

注意:不要使用被删除的mysql扩展,请使用mysqli或PDO。

不要使用mysql。它已在PHP7中删除,请勿使用mysql。它已在PHP7中删除。当我调用php时,如何传入此id?这就是我目前使用foreach(get_student_summary()作为$r)的方式,然后我使用$r来提取数据。如果我按照您建议的方式进行操作,我将如何让用户\u idOh,我知道您想要什么,在每个用户之间迭代。我认为应该希望通过每个用户的子数组传递所有数据。(去掉SQL查询中的linebreak)当我调用php时,如何传入这个id?这就是我目前使用foreach(get_student_summary()作为$r)的方式,然后我使用$r来提取数据。如果我按照您建议的方式进行操作,我将如何让用户\u idOh,我知道您想要什么,在每个用户之间迭代。我认为应该希望通过每个用户的子数组传递所有数据。(去掉SQL查询中的换行符)您好,如果您能看一下这个屏幕截图,它显示了我是如何使用PHP从我创建的函数中提取数据的,非常感谢它现在可以工作了:)我应该早点发布这个问题,这样我就不用太担心了,很快就得到了答案哈。谢谢,没问题!祝你好运,很高兴我能帮上忙。嗨,如果你能看一下这个屏幕截图,它显示了我是如何使用PHP从我创建的函数中提取数据的,非常感谢它现在可以工作了:)我应该早点发布这个问题,这样我就不用太担心了,很快就得到了答案。谢谢,没问题!祝你好运,很高兴我能帮忙。