Php SQL中的链接和联接数据
我正在使用smarty php模板和sql server 我有以下表格:Php SQL中的链接和联接数据,php,sql,Php,Sql,我正在使用smarty php模板和sql server 我有以下表格: table 1 (anime_pages) : contains data table 2 (anime_genres) : contains categories table 3 (genres_pages) : contains relationship between data and category 我试图显示3个随机类别,其中10个数据结果来自该类别 我现在有以下php代码: $randomcsql =
table 1 (anime_pages) : contains data
table 2 (anime_genres) : contains categories
table 3 (genres_pages) : contains relationship between data and category
我试图显示3个随机类别,其中10个数据结果来自该类别
我现在有以下php代码:
$randomcsql = $db->query("SELECT * FROM anime_genres ORDER BY RAND() LIMIT 3");
while($ft5 = $db->fetch_array($randomcsql))
{
$randomcats[] = $ft5;
}
$smarty->assign('randomcats' , $randomcats);
$db->free_result($randomcsql);
$animecatssql = $db->query("SELECT * FROM anime_pages JOIN genres_pages ON anime_pages.id = genres_pages.genre_id WHERE genres_pages.genre_id = (".$ft5['id'].") LIMIT 10 ");
while($ft6 = $db->fetch_array($animecatssql))
{
$animecats[] = $ft6;
}
$smarty->assign('animecats' , $animecats);
$db->free_result($animecatssql);
问题在于(“$ft5['id']”)。“
)它没有给我任何结果,如果我用一个数字替换它。。。我将得到一个重复的结果(每个数据重复两次)
我怎样才能解决这个问题
有更好的代码可以使用吗
我正在尝试这样做:在您的代码中
$animecatssql = $db->query("SELECT * FROM anime_pages JOIN genres_pages ON anime_pages.id = (".$ft5['id'].") LIMIT 10 ");
您使用的是$ft5
变量,该变量不存在于您的费时数据条件之外
你还说你需要3个随机类别和10个数据集。因此,您基本上需要总共30个数据集(每个10个)。您应该在循环中使用此查询,该循环将对数组$randomcats
运行三次。这个数组也会有数组作为每三个键的值。因此,您必须转到数组的值(这将再次成为一个数组),然后在该值上可以获得您正在搜索的值
希望我清楚。如果没有,请说明。我通过显示随机结果而不是三个来解决这个问题
$randomcsql = $db->query("SELECT * FROM anime_genres ORDER BY RAND() LIMIT 1");
while($ft5 = $db->fetch_array($randomcsql))
{
$randomcats[] = $ft5;
$animecatssql = $db->query("SELECT * FROM anime_pages JOIN genres_pages ON anime_pages.id = genres_pages.genre_id WHERE genres_pages.genre_id = (".$ft5['id'].") LIMIT 10 ");
while($ft6 = $db->fetch_array($animecatssql))
{
$animecats[] = $ft6;
}
}
$smarty->assign('randomcats' , $randomcats);
$db->free_result($randomcsql);
$smarty->assign('animecats' , $animecats);
$db->free_result($animecatssql);
我尝试这样做:为什么不在问题和示例代码中使用表名?如果我们必须猜测表1是
anime\u类型
还是genres\u页面
还是anime\u页面
,那么我们就更难猜到了。如果您在每个表中至少给我们提供最重要的列(列的相关子集是可以的),这也会有所帮助。在while
循环之外是否有$ft5
可用?while循环之外没有ft5?也许再看看你的代码。