gpt4 book ai didi

php - 基于两个表中变量是否匹配的 Switch 语句

转载 作者:行者123 更新时间:2023-12-01 00:24:56 25 4
gpt4 key购买 nike

所以我有一个 switch 语句,我想根据一个表中的 id 是否在另一个表中具有匹配的外键来显示一种或另一种形式。

到目前为止,我尝试过的是将一个 while 语句嵌套到另一个不起作用的语句中。

$subresult = mysqli_query($con,"SELECT * FROM tags GROUP BY tag");
$subresult2 = mysqli_query($con,"SELECT * FROM tag_subscribe WHERE uid = $uid");

while ($row = mysqli_fetch_array($subresult)) {
$tid = $row['tid'];

while ($row2 = mysqli_fetch_array($subresult2)) {
$tid2 = $row2['tid'];
}
if ($tid2 == $tid) {
$subbedup = 'yes';
} else {
$subbedup = 'no';
}

switch ($subbedup) {
case ('yes'):
echo "alternate html form goes here because $tid2 == $tid";
break;
case ('no'):
echo "html form goes here";
break;
}
}

所以当这段代码运行时,它只返回开关“no”,除了它会返回一个开关“yes”,它恰好是包含外键的第二个表的最后一条记录。当我考虑它时,这是有道理的,因为它会一直运行这个循环,直到用完表中的记录。所以我花了大约 6 分钟来达到这一点,我花了最后 6 个小时试图让它正常工作,但没有任何运气。

再一次,SO 的好人,救救我吧!请,谢谢 :)

所以我的问题是:如何正确完成这项工作?

最佳答案

我不太确定你的数据库结构,所以我会即兴发挥。

给定这些示例表和列:

tags
id name

tag_subscriptions
user_id tag_id

下面的查询将遍历所有标签。每个标签都包含一个 subscribed 列,设置为“yes”或“no”,具体取决于当前用户是否订阅了该特定标签。

$sql="SELECT t.`id`, t.`name`, IF (ISNULL(ts.`tag_id`),'no','yes') AS `subscribed`
FROM `tags` t
LEFT JOIN `tag_subscriptions` ts ON (ts.`user_id`=$uid AND ts.`tag_id`=t.`id`)
WHERE 1;"

然后遍历所有标签:

$q=mysql_query($sql) or die(mysql_error());

while ($row=mysql_fetch_assoc($q)) {
switch ($row['subscribed']) {
case 'yes'
// user is subscribed to this tag
break;
default:
// user is not subscribed to this tag
}
}

我认为(希望)这更接近您正在寻找的内容。

http://sqlfiddle.com/#!2/58684/1/0

关于php - 基于两个表中变量是否匹配的 Switch 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16094939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com