0

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

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>

但它只会呼应Array。

4

6 回答 6

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”键值。

于 2013-04-28T19:51:38.877 回答
1

好吧,它与“Array”相呼应,因为它就是一个数组。;)

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

如果您想要返回的行数,rowCount您需要更改fetch_tweets()方法的返回对象并添加它。或者,更简单的是,您可以简单地count()在返回的数组上使用,因为您似乎没有更改查询返回的行数。

现在来一些更一般的东西:

  • 切勿在未事先检查的情况下使用$_GET,或任何其他可能包含用户可编辑数据的查询变量。$_POST
  • 使用fetchAll()而不是遍历查询的结果集。
于 2013-04-28T19:51:48.567 回答
1

在您的fetch_tweets函数中,您返回一个带有推文的数组。现在解决您的问题的最快方法是:

$tweets  = new Tweets();
$rows    = $tweets->fetch_tweets($_GET['uid']);
$numrows = count($rows);
<div> <?php echo $numrows; ?> </div>
于 2013-04-28T19:41:10.273 回答
1

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

<?php echo count($numrows) ?>
于 2013-04-28T19:41:49.187 回答
1
<div> <?php echo count($numrows); ?> </div>
于 2013-04-28T19:41:51.237 回答
1

您正在返回一个数组,因此当您打印“$numrows”时会打印您“数组”。您应该使用“foreach”并从“$numrows”中获取您的值。

但是,如果您尝试获取行数,那么您正在返回错误的变量,您正在返回“$tweet”并且必须是“$numrows”。

于 2013-04-28T19:41:52.577 回答