我试图让脚本从一个表中随机选取一行,并继续搜索它是否存在于另一个表中。
代码可以更好地解释它
do {
// get a random row from table A
$search = mysqli_query($db, 'SELECT * FROM `a` ORDER BY RAND() LIMIT 1');
// get the id
$row = mysqli_fetch_assoc($search);
$row_id = $row['id'];
// check table B to see if the row id exists
$check = mysqli_query($db, 'SELECT `id` FROM `b` WHERE `item` = "' . $row_id . '" LIMIT 1');
$result = mysqli_num_rows($check);
} while ($result === 1);
根据我的理解,它应该循环,直到找到表a中存在的歌曲,而不是表b中的歌曲,然后继续,我可以使用 $row_id
.
现在可以了,但是每隔一段时间它就会返回表b中的一行
3条答案
按热度按时间csga3l581#
为什么不运行一个查询,从表中随机获取一行呢
a
表中不存在的b
? 一般来说,在循环中进行查询是个坏主意,通常可以避免。可能不是最有效的查询,但这应该比在多个查询中循环工作更好。然后像平常一样运行查询,并获取它返回的单行。
w80xi6nr2#
如果有一个
LEFT JOIN
查询以查找中的所有歌曲a
不存在于b
然后从列表中随机选择一个。还要注意的是,最好选择您真正想要的列,而不是使用*
. 根据您的代码,此查询应该可以工作:然后,您可以移除
do
循环并用此代码替换它。请注意,我已经添加了一个检查,实际上有一首歌a
这在世界上是不存在的b
:a8jjtwal3#
不确定你的bug是什么,你的代码看起来不错。我认为你们表格中的数据可能是问题所在。
但是,您应该尝试在一个查询中执行,而不是循环。像这样: