$sqlCommand2 = "SELECT blogid FROM blogtags WHERE tag='$pageid'";
$query2 = mysqli_query($myConnection, $sqlCommand2) or die (mysqli_error());
while ($row = mysqli_fetch_array($query2)) {
$selectedtag = $row['blogid'];
}
这个sql select应该给$ selectedtag值1,2,3,但它只给出值3.最后一行等于pageid。任何人都可以弄清楚为什么它没有拉动所有行而只是最后一行?
答案 0 :(得分:1)
这是因为您要为循环内的变量赋值。所以最后一个值会覆盖所有其他值。改为使用数组。
将$selectedtag = $row['blogid'];
更改为$selectedtag[] = $row['blogid'];
答案 1 :(得分:1)
尝试:
$selectedtag = array();
while ($row = mysqli_fetch_array($query2)) {
$selectedtag[] = $row['blogid'];
}
print_r($selectedtag);
答案 2 :(得分:1)
您继续使用最新行的迭代的blogid值覆盖$selectedtag
。
您应该使用这些值创建一个数组,或者使用循环中的值执行某些操作。
这完全取决于您计划对数据做些什么。
如果您想搜索带有收集ID的博客,最好创建一个更大的查询,而不是搜索博客ID循环那些并搜索博客。
你可以这样做:
SELECT id, title, content, author, date
FROM blogs
WHERE id IN
(SELECT blogid FROM blogtags WHERE tag ='$pageid')
以上是一个非常粗略的示例,对您的列/表命名知之甚少,但通过上述查询,您应该得到具有特定标记的博客结果。
祝你好运!答案 3 :(得分:0)
更改为:
$sqlCommand2 = "SELECT blogid FROM blogtags WHERE tag='$pageid'";
$query2 = mysqli_query($myConnection, $sqlCommand2) or die (mysqli_error());
while ($row = mysqli_fetch_array($query2)) {
$selectedtag[] = $row['blogid'];
}
$ selectedtag []< - 将值放入数组中;
答案 4 :(得分:0)
查询中的WHERE子句正在阻止它。
如果$pageid
变量的值为3,则查询的计算结果为:
SELECT COLUMN blogid FROM TABLE blogtags ONLY WHERE THE COLUMN tag HAS THE VALUE OF 3
所以基本上,查询正是按照它所说的完成。
如果要选择前两行,则必须使用WHERE子句进行创作:
SELECT blogid FROM blogtags WHERE tag <= $pageid AND tag > $pageid - 3
这将选择标签为3或更小且大于3 - 3 = 0的所有内容;
因此,标签可以是3,2或1。
修改强>
我可能误解了这个问题,但我会在这里留下我的答案,这有助于其他人偶然发现它。
答案 5 :(得分:0)
退出mysqli并使用PDO。它拥有您需要的一切:
$stm = $pdo->prepare("SELECT blogid FROM blogtags WHERE tag=?");
$stm->execute(array($pageid));
$rows = $stm->fetchAll(PDO::FETCH_COLUMN, 0);