我有两张桌子供用户使用;登录表和用户配置文件表。
我想将'userprofiletable'中的值与另一个名为posts的表中的另一个值进行比较。如果值相等,则显示一个列表。
我有以下代码。问题是它没有将posts表中的值与用户配置文件表中的会话值进行比较。
有人能帮帮我吗?
<?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表中。例如,当有人发表新帖时。
答案 0 :(得分:0)
你的帖子有点不清楚,但我认为这就是你想要的:
<?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>';
}
}
?>
答案 1 :(得分:0)
问题不明确,但可能有两个答案:
要重现您的代码,您可以在一个SQL查询中执行:
$dbreq = 'SELECT *
FROM `posts`
WHERE city="'.mysql_real_escape_string($_SESSION['student_city']).'"
ORDER BY `pos` DESC
LIMIT 4';
但是,如果有两个表,则需要“LEFT JOIN”将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,用于链接两者。)