我可能做错了,但似乎无法让它正确...... 我有一个工作正常的查询,现在,如果我写在查询
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>
但它只能回应阵列。
答案 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()
而不是通过查询的结果集迭代自己。