在div中回显rowCount

时间:2013-04-28 19:36:07

标签: php pdo

我可能做错了,但似乎无法让它正确...... 我有一个工作正常的查询,现在,如果我写在查询

echo $query->rowCount()

它给了我屏幕上的行数。 但我可以将这个回声插入div中,所以我尝试了这个。

function fetch_tweets($uid){ 
$query = $this->link->query
("SELECT.....
WHERE... "); 

$tweet = array();
while(($row = $query->fetch(PDO::FETCH_ASSOC)) !== FALSE) { 
$tweet[] = $row;
}   
$numrows =  $query->rowCount(); /* Count the messages*/
return $tweet; 
 } 

然后在页面上。

  $tweets = new Tweets();   
    $numrows = $tweets->fetch_tweets($_GET['uid']);
    <div> <?php echo $numrows; ?> </div>

但它只能回应阵列。

6 个答案:

答案 0 :(得分:1)

fetch_tweets函数中,使用推文返回数组。现在问题最快的解决方案是:

$tweets  = new Tweets();
$rows    = $tweets->fetch_tweets($_GET['uid']);
$numrows = count($rows);
<div> <?php echo $numrows; ?> </div>

答案 1 :(得分:1)

您将$numrows设置为fetch_tweets()返回的内容。所以,这将是一系列推文。这是如何显示数组中元素的数量:

<?php echo count($numrows) ?>

答案 2 :(得分:1)

<div> <?php echo count($numrows); ?> </div>

答案 3 :(得分:1)

你正在撤回一个数组,所以当你打印“$ numrows”时会打印出你的“数组”。您应该使用“foreach”并从“$ numrows”获取您的值。

但是如果你试图获得行数,你正在撤回错误的变量,你正在撤回“$ tweet”并且必须是“$ numrows”。

答案 4 :(得分:1)

像这样更改你的功能:

function fetch_tweets($uid){ 
    $query = $this->link->query ("SELECT * FROM somewhere WHERE stuff"); 

    $tweet = array();
    while(($row = $query->fetch(PDO::FETCH_ASSOC)) !== FALSE) { 
        $tweet[] = $row;
    }

    $tweet["rowcount"] = $query->rowCount(); /* Count the messages*/
    return $tweet; 
}

然后在你的代码中放入:

$tweets = new Tweets();
$tweet = $tweets->fetch_tweets($_GET['uid']);
<div><?=$tweet["rowcount"]?></div>

确保在您的推文循环中放入IF语句,以过滤掉“rowcount”键值。

答案 5 :(得分:1)

嗯,它回声“数组”,因为它就是一个阵列。 ;)

只需按照您的代码: 首先生成Tweet对象。然后在该对象上调用fetch_tweets()方法,该方法从数据库返回一组内容并将结果保存在$numrows中。然后输出变量。但是因为它是一个数组,所以你得到的只是“数组”,这就是预期的行为。

如果您想要从rowCount返回的行数,您需要更改fetch_tweets()方法的返回对象并添加它。或者,更容易,您可以在返回的数组上使用count(),因为您似乎不会更改查询返回的行数。

现在更一般的东西:

  • 请勿在未事先检查的情况下使用$_GET$_POST或任何其他可能包含用户可编辑数据的变量。
  • 使用fetchAll()而不是通过查询的结果集迭代自己。