2013-04-17 66 views
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']; 
} 

这个sql select应该给$ selectiontag 1,2,3的值,但它只给出3的值。最后一行等于pageid。任何人都可以弄清楚为什么它不拉动所有的行,只有最后一个?选择多行PHP/MySQL

+1

请解释一下你的逻辑,如何调用“$ selectedtag = $行[‘blogid’]”三次导致含3的值变量?你是否假设变量是一个堆栈?一个包? – cernunnos

回答

1

这是因为您正在为循环内的变量赋值。所以最后一个值会覆盖所有其他的值。改用数组。

变化$selectedtag = $row['blogid'];$selectedtag[] = $row['blogid'];

+0

这很棒,但是如何使用$ selectedtag []中的值?我希望使用获得的值从另一个表中获取帖子,如下所示: $ sqlCommand =“SELECT blogid,blogtitle,content,blogtime,category,blogseourl,author FROM blog WHERE blogid ='$ selectedtag'”; – Newcastlefan

+0

@Urbane是的,它是:) – raidenace

+0

好的,谢谢@Raidenace我会仔细研究一下,你知道任何有关如何循环数组和创建逗号串联字符串的教程的网站吗?对不起,我对PHP很陌生。 – Newcastlefan

1

尝试:

$selectedtag = array(); 
while ($row = mysqli_fetch_array($query2)) { 
    $selectedtag[] = $row['blogid']; 
} 

print_r($selectedtag); 
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 []阵列中的< --put值;

1

您使用最近一次迭代的行的blogid值继续覆盖$selectedtag

您应该使用这些值创建一个数组,或者使用循环内的值执行一些操作。

这一切都取决于你打算如何处理数据。

如果你想用搜集到的ID搜索博客,你最好创建一个更大的查询,而不是搜索博客ID的循环和搜索博客。

你可以做这样的事情:

SELECT id, title, content, author, date 
FROM blogs 
WHERE id IN 
    (SELECT blogid FROM blogtags WHERE tag ='$pageid') 

以上是一个非常粗略的例子与列/表命名的一些知识,但与上述查询你应该得到与特定博客的结果标签。

祝你好运!

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

编辑

我可能误解了这个问题,但我会在这里留下我的回答柜面它可以帮助别人谁在它绊倒。

0

退出mysqli并使用PDO。它有你需要的一切:

$stm = $pdo->prepare("SELECT blogid FROM blogtags WHERE tag=?"); 
$stm->execute(array($pageid)); 
$rows = $stm->fetchAll(PDO::FETCH_COLUMN, 0);