如何使用会话ID从php mysql中的两个或多个表中获取值

Posted

技术标签:

【中文标题】如何使用会话ID从php mysql中的两个或多个表中获取值【英文标题】:how to get values form two or more table in php mysql using session id 【发布时间】:2016-11-02 20:43:06 【问题描述】:

我创建了 2 个表,学生和班级。而且我还使用 stud_id 作为类表中的外键.... 我如何使用 stud_id 获取两个表的值????我也在会话中使用 stud_id....

<?php

 $id=$_SESSION["Stud_id"];

 $query = mysql_query ("SELECT * FROM student where Stud_id='$id'");

 if (!$query)
 
 die('Invalid query: ' . mysql_error());
 
 while($row = mysql_fetch_assoc($query)) 

    echo "<tr><td> Student ID:</td><td> " . $row["Stud_id"]. "</td></tr>";
    echo "<tr><td> Student Name:</td><td> " . $row["Stud_name"]. "</td>  </tr>";
    echo "<tr><td> Password:</td><td> " . $row["password"]. "</td></tr>";

    echo "<tr><td> Father:</td><td> " . $row["Stud_father"]. "</td></tr>";
    echo "<tr><td> Date Of Birth:</td><td> " . $row["Stud_dob"]. "</td>     </tr>";
    echo "<tr><td> Address:</td><td> " . $row["Stud_address"]. "</td></tr>";
    echo "<tr><td> Gender:</td><td> " . $row["Stud_gender"]. "</td></tr>";
    echo "<tr><td> Phone No:</td><td> " . $row["Stud_phone"]. "</td></tr>";
    echo "<tr><td> Class</td><td> " . $row["Stud_class"]. "</td></tr>";


?>

【问题讨论】:

dev.mysql.com/doc/refman/5.7/en/join.html How can an SQL query return data from multiple tables的可能重复 警告:如果您只是学习 PHP,请不要使用mysql_query 接口。它是如此可怕和危险,以至于在 PHP 7 中被删除。像 PDO is not hard to learn 这样的替代品和像 PHP The Right Way 这样的指南解释了最佳实践。您的用户参数不是properly escaped,有SQL injection bugs可以被利用。 【参考方案1】:

您可以使用以下查询来获取结果

<?php

 $id=$_SESSION["Stud_id"];

 $query = mysql_query ("select s.*,c.* from student s join class c on s.Stud_id=c.Stud_id where s.Stud_id = '$id'");

 if (!$query)
 
 die('Invalid query: ' . mysql_error());
 
 while($row = mysql_fetch_assoc($query)) 

    echo "<tr><td> Student ID:</td><td> " . $row["s.Stud_id"]. "</td></tr>";
    echo "<tr><td> Student Name:</td><td> " . $row["s.Stud_name"]. "</td>  </tr>";
    echo "<tr><td> Password:</td><td> " . $row["s.password"]. "</td></tr>";

    echo "<tr><td> Father:</td><td> " . $row["s.Stud_father"]. "</td></tr>";
    echo "<tr><td> Date Of Birth:</td><td> " . $row["s.Stud_dob"]. "</td>     </tr>";
    echo "<tr><td> Address:</td><td> " . $row["s.Stud_address"]. "</td></tr>";
    echo "<tr><td> Gender:</td><td> " . $row["s.Stud_gender"]. "</td></tr>";
    echo "<tr><td> Phone No:</td><td> " . $row["s.Stud_phone"]. "</td></tr>";
    echo "<tr><td> Class</td><td> " . $row["s.Stud_class"]. "</td></tr>";


?>

编辑 您可能需要更改上面的列名

【讨论】:

这将有效地执行交叉连接,这似乎并不理想。我认为您的查询可以使用ON 语句。见Can I use mysql JOIN without ON condition?。【参考方案2】:

加入表格。所以代替这种结构:

SELECT *
FROM student
WHERE ...

你会有这样的结构:

SELECT *
FROM student
INNER JOIN class ON student.stud_id = class.stud_id
WHERE ...

这将为您提供两个表的乘积,其中包含两个表的所有列。

请注意,我明确省略了 WHERE 子句,以便在答案中不包含 SQL injection 漏洞。你肯定会想看看mysqliPDO 以及他们对prepared statements with query parameters 的使用。 (这比听起来简单。)目前,您的代码对 Internet 上最常见的漏洞开放。

【讨论】:

以上是关于如何使用会话ID从php mysql中的两个或多个表中获取值的主要内容,如果未能解决你的问题,请参考以下文章

从 PHP 中检索 MYSQL 连接值

将两个数组插入到一个mysql表中

MySQL和PHP:如何在包含ID的数组中获取多个ID [重复]

从多个表中检索多个列不存在或匹配行集(mysql php)

php+mysql多条件多值查询

我如何在 php、mysql 和 ajax 的会话中显示用户在线或离线