Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从while循环中的不同表获取数据_Php_Mysql_Loops_While Loop - Fatal编程技术网

Php 从while循环中的不同表获取数据

Php 从while循环中的不同表获取数据,php,mysql,loops,while-loop,Php,Mysql,Loops,While Loop,我有两个生成留言板输出的表。第一个表使用while循环显示来自表posts的给定主题中的所有答案。这个很好用 然后,我还有一个名为thumbsup的表,当用户点击留言板中的帖子的“竖起大拇指”图标时,该表会进行收集。我只希望spesific用户能够按一次“竖起大拇指”按钮 我正在尝试从表thumbsup中获取数据,以确定用户是否为posts表中的每个post按下了按钮 我尝试了以下sql语句: SELECT topic, user FROM thumbsup WHERE topic = ".$p

我有两个生成留言板输出的表。第一个表使用while循环显示来自表posts的给定主题中的所有答案。这个很好用

然后,我还有一个名为thumbsup的表,当用户点击留言板中的帖子的“竖起大拇指”图标时,该表会进行收集。我只希望spesific用户能够按一次“竖起大拇指”按钮

我正在尝试从表thumbsup中获取数据,以确定用户是否为posts表中的每个post按下了按钮

我尝试了以下sql语句:

SELECT topic, user FROM thumbsup WHERE topic = ".$posts_row['id']." AND user = ".$_SESSION['username']."
thumbsup如下所示:

id | topic | user
1  | 1     | bill
2  | 3     | rachel
3  | 5     | bill
4  | 5     | rachel
5  | 7     | rachel
我这里的问题是,我无法让sql同时按主题和用户名进行排序。我可以让它按主题排序,但它只输出给定帖子的第一个条目;在这种情况下,它将在第5个帖子上输出“bill”

我想我可能需要在现有的while循环中添加一个新的while循环,但我也没有这个功能

非常感谢您的帮助

编辑:

好的,我用这个查询来获取帖子,并检查用户是否有拇指支撑记录:

“从帖子左侧外部选择posts.topic、posts.id、posts.content、posts.date、posts.user、posts.moderation、thumbsup.topic、thumbsup.user在posts.id=thumbsup.topic和thumbsup.user=“.$”会话['username']”其中posts.topic=“$mysqli->real\u escape\u字符串($\u GET['id'])。“”

  • 这将导致while循环中没有帖子,但是如果我删除用户名,它将再次只显示帖子。我的问题有问题吗
EDIT2-解决方案:

多亏了你,我终于把它弄好了

下面是我的最后一个sql查询:

SELECT posts.topic, posts.id, posts.content, posts.date, (posts.user) AS users, posts.moderation, thumbsup.topic, thumbsup.user FROM posts LEFT OUTER JOIN thumbsup ON posts.id = AA_forum_thumbsup.topic AND thumbsup.user = '".$_SESSION['username']."' WHERE posts.topic = " . $mysqli->real_escape_string($_GET['id'])."
正如Kickstart所提到的,我需要在用户名周围加上引号,因为它是一个字符串,而且我还必须将posts表中的用户定义为“users”。否则,结果将仅输出用户名为$\u SESSION['username']的帖子上的数据


非常感谢,我希望这对其他人也有用

我认为您正在登录应用程序,如果是,则只记录登录用户的记录,然后按主题排序。现在,您将获得带有值的数组作为主题。在这里,您可以使用inarray()进行检查。如果该值在inarray中存在,则表示用户已经进行了投票。

使用左连接,如下所示:-

SELECT posts.id, thumbsup.user 
FROM posts
LEFT OUTER JOIN thumbsup 
ON posts.id = thumbsup.topic
AND thumbsup.user = '".$_SESSION['username']."'

如果$\u SESSION['username']有此帖子的拇指支持记录,则此操作将返回所有帖子(在本例中仅返回帖子的ID),并且用户字段将包含用户名。如果没有,则返回的用户字段将为空

您真正想要的是什么?不懂,举个例子。主题5需要什么?它将在某个
主题
上输出
用户名
的第一个拇指。如果您只想知道此人是否点击了该帖子,您不需要while循环。请连接两个表并在查询中使用sort(对多个列进行排序,以逗号分隔),您想要的实际输出是什么…?我希望能够确定用户是否已经投票支持该帖子。如果用户已经投票,那么他将无法再次投票支持该特殊帖子。就像一个论坛“竖起大拇指”或facebook“喜欢”按钮。