0

我的 num_rows 以 0 的形式返回,我尝试了几种方式调用它,但我被卡住了。这是我的代码:

    $conn = new mysqli($dbserver, "dbuser", "dbpass", $dbname);

    // get the data 
    $sql = 'SELECT AT.activityName, AT.createdOn
            FROM userActivity UA, users U, activityType AT  
            WHERE U.userId = UA.userId
            and AT.activityType = UA.activityType
            and U.username = ?
            order by AT.createdOn';             
    $stmt = $conn->stmt_init();
    $stmt->prepare($sql);
    $stmt->bind_param('s', $requestedUsername);
    $stmt->bind_result($activityName, $createdOn);
    $stmt->execute();

    // display the data
    $numrows = $stmt->num_rows;
    $result=array("user activity report for:  " . $requestedUsername . " with " . $numrows . " rows:");
    $result[]="Created On --- Activity Name";
    while ($stmt->fetch())
    {
        $msg = " " . $createdOn . " --- " . $activityName . " ";
        $result[] = $msg;
    }

    $stmt->close();

找到了多行,提取循环处理它们就好了。关于什么可以让我获得查询中返回的行数的任何建议?

非常感谢您的建议。提前致谢。

4

4 回答 4

2

你需要先打电话$stmt->store_result(),就在$stmt->num_rows.

于 2012-04-13T23:30:27.247 回答
1

在调用 num_rows; 之前尝试添加它。

$stmt->store_result();

于 2012-04-13T23:27:36.060 回答
0

我不知道这是否会解决它,但如果我没记错的话,你可以在查询之后才能bind_results解决。execute

还有你的while循环:

while ($stmt->fetch())
 {
     $msg = " " . $createdOn . " --- " . $activityName . " ";
     $result[] = $msg;
 }

您将在循环的每次迭代中丢失所有$msg变量,除了最后一个设置,因为您需要做$msg .=或制作$msg一个数组$msg[] =

于 2012-04-13T23:31:18.477 回答
0
$stmt->store_result();
$numrows = $stmt->num_rows;

检查这个: http: //php.net/manual/en/mysqli-result.num-rows.php和这个 http://php.net/manual/en/mysqli-stmt.num-rows.php

于 2012-04-13T23:35:06.943 回答