Php 如何从第二个表中获取会话值?

Php 如何从第二个表中获取会话值?,php,Php,我有两个表供用户使用;登录表和用户配置文件表 我想将“userprofiletable”中的一个值与另一个名为posts的表中的另一个值进行比较。如果该值相等,则显示一个列表 我有以下代码。问题在于它没有将posts表中的值与user profile表中会话的值进行比较 有人能帮我吗 <?php $limit = '5'; $dbreq = 'SELECT * FROM `posts` ORDER BY `pos` DESC'; $dbdata = mysql_query($dbreq);

我有两个表供用户使用;登录表和用户配置文件表

我想将“userprofiletable”中的一个值与另一个名为posts的表中的另一个值进行比较。如果该值相等,则显示一个列表

我有以下代码。问题在于它没有将posts表中的值与user profile表中会话的值进行比较

有人能帮我吗

<?php
$limit = '5';
$dbreq = 'SELECT * FROM `posts` ORDER BY `pos` DESC';
$dbdata = mysql_query($dbreq);
while($dbval = mysql_fetch_array($dbdata))
{
  if (($dbval['city'] == $_SESSION['student_city'])) { //checks for last 4 accomodation
    if ($limit >= '1') {
      echo '<tr><td><a href="acomod.php?view='.$dbval['id'].'">'.$dbval['title'].'</a></td></tr>';
      $limit = $limit -'1';
    }
  }
}
?>


我还想获取userprofiletable的值,并将其发布到posts表中。例如,当有人发表一篇新文章时。

你的文章有点不清楚,但我认为这就是你想要的:

<?php
$userid = 11542;//Sample uid. You will have to figure this out and set it.
$limit = 5;
$dbreq = "SELECT * FROM `posts` WHERE `userid`=".$userid." ORDER BY `pos` DESC LIMIT=".$limit.";";
$dbdata = mysql_query($dbreq);
while($dbval = mysql_fetch_array($dbdata))
{
  if (($dbval['city'] == $_SESSION['student_city'])) { //checks for last 4 accomodation
    echo '<tr><td><a href="acomod.php?view='.$dbval['id'].'">'.$dbval['title'].'</a></td></tr>';
  }
}
?>

问题不清楚,但可能有两个答案:

要复制代码,可以在一个sql查询中执行以下操作:

$dbreq = 'SELECT *
FROM `posts`
WHERE city="'.mysql_real_escape_string($_SESSION['student_city']).'"
ORDER BY `pos` DESC
LIMIT 4'; 
但是,如果有两个表,则需要“左连接”将posts表链接到userprofile表

$dbreq = 'SELECT p.*, u.*
FROM posts p
LEFT JOIN userprofiletable up ON p.UserID=up.UserID
WHERE up.city="'.mysql_real_escape_string($_SESSION['student_city']).'"
ORDER BY p.pos DESC
LIMIT 4';

(上表中的UserID是posts表和userprofiletable中链接这两个表的字段的名称。)

问题是没有从数据库中获取$_SESSION['student_city'])来进行比较。如果'student_city'保存在数据库中,而不是在SESSION中,那么当city和student_city在同一个表中时,我的代码已经起作用了,但是现在它们在不同的表中,不起作用了,这就是问题所在,我认为你需要回到你原来的帖子,定义你从中绘制的表,以及你从什么会话变量开始。您提供的代码表明“student_city”已经是范围变量的一部分。我理解,但在登录表中我有ID(userid),在userprofiletable中我也有ID(userid)(这些都是链接的),在posts表中我也有ID,但它是带有autoincrement的post的ID,我在posts表中没有用户id,因此如果我的用户id被称为id,并且我在posts表中已经有了id(posts id),我该怎么做?只需将“posts”表中的“p.UserID”更改为p.TheNameofieldContainingTheUserId,然后在“userprofile”表中将“p.TheNameofieldContainingTheUserId”更改为p.TheNameofieldContainingTheUserId表。如果您想从两个表中获取字段:选择p.OneFieldFromPostTable、p.AnotherFieldFromPostTable、up.FieldFromUserProfileTable等。如果字段名冲突,则a)重命名它们(将“主键”称为“ID”是不好的做法)当您最终陷入这种混乱时,请将user\u id重命名为user\u id,然后在posts表中使用完全相同的字段名。然后为posts表重命名post\u id。但是,如果必须这样做,“选择p.id作为PostID,up.id作为UserProfileID”,然后取消返回的数组,$dbval['PostID']将是第一个,而$dbval将是第一个['UserProfileID']