gpt4 book ai didi

php - double mysql_fetch_array(从其他表获取数据获取数据)/nest

转载 作者:行者123 更新时间:2023-11-29 12:38:09 24 4
gpt4 key购买 nike

我尝试搜索这个问题,但他们的错误是不同的。由于某种原因我正在使用 PHP 5.2。

我想做的是,从一个表中获取 mysql_fetch_array,然后使用该表的一列从另一个表中获取一行。

这是我的代码(对于糟糕的格式深表歉意)

$sql = mysql_query("SELECT * FROM testimonies WHERE visibility != 'Hide' ORDER BY date_submitted DESC");
$testimonyCount = mysql_num_rows($sql); // count the output amount
if ($testimonyCount > 0) {

//get data 'testimonies' table
while($info = mysql_fetch_array($sql)){
$username = $info['username'];

//Get id (in admin table) where username = username (in testimonies table)
$userid = mysql_query("SELECT * FROM admin WHERE username = $username LIMIT 1");
while($user = mysql_fetch_array($userid)){ $id = $user['id'];}

$testimonies .= "<div class='row'><div class='col-lg-2'><center>
<img src='Pictures/Profile_Pictures/".$userid['id'].".jpg' width='160' height='160'>
<br>".$info['username']."</center></div><div class='col-lg-2'><center>
<img src='back/inventory_images/34.jpg' width='160' height='160'><br>"
.$info['product_used']."</center></div><div class='col-lg-8'><center><u>(Date: "
.$info['date_submitted']." - Ordered from our branch in <strong>"
.$info['branch_ordered']."</strong>, City)</u></center>".$info['testimony']."
</div></div><br>";
}
}
else {
$testimonies = "No one has submitted their testimonies yet.";
}

所以你看,我的表“testimonies”有一列“用户名”,“admin”表也是如此。我想做的是获取用户名的行(在管理表中),其中用户名是与“证言”表中的相同。我使用第 14 行第二个表中的信息作为图像 src。

不幸的是,它给了我这个错误:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/_____/public_html/Testimonies.php on line xx
Notice: Undefined variable: id in /home/_____/public_html/Testimonies.php on line xx

其他人从我搜索过的内容中获取了他们在第一个循环中的数据,但我什么也没得到。第二个循环肯定是有问题的。帮助。

谢谢。

最佳答案

首先我要提到的是,以可以循环的方式构建查询是一个非常糟糕的主意。与您的每个证言一样,您正在执行另一个查询来获取admin信息。因此,对于 10 个证词,您将访问 MySQL 10 次 [原始查询 +1]。您通常希望进入、获取数据,然后退出。

因此,处理此问题的更好方法是让 MySQL 通过连接为您完成:

选择*
FROM testimonies 内部加入 admin on testimonies.username = admin.username
WHERE 可见性 != '隐藏'
ORDER BY date_subscribed DESC

以上内容只会向您返回具有匹配管理员的证词。如果您想返回证词,即使他们没有管理员,您也需要外部联接。您可以将 inner join admin 替换为 left external join admin

所以删除你的第二个 while 循环并尝试一下。

此外,mysql_函数已被弃用..因此您不应该使用它们来开发新代码。尝试让我的更改按原样工作,但您应该考虑查看 PDO [ Why shouldn't I use mysql_* functions in PHP? ].

关于php - double mysql_fetch_array(从其他表获取数据获取数据)/nest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26466711/

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