【问题标题】:return total of stmt->execute()返回 stmt->execute() 的总数
【发布时间】:2011-08-23 05:17:42
【问题描述】:

使用 stmt->prepare(); 时如何找出查询返回的行数; /stmt->执行();
在下面的示例中,如果我没有得到任何结果,我想向用户显示一条好消息

任何想法如何实现这一目标?

谢谢

已编辑: 正如@zerkms 所说,有一个解决方案,但是,我希望有一个解决方案不会缓冲语句句柄中的整个结果集......

....

$selected_disc = array(1=>'disc1', 2=>'disc2', 3=>'disc3');

// show tracks for each disc in album
$sql = 'SELECT track_id, name FROM album WHERE album_id = ?';

foreach ($selected_disc as $key => $disc) {

    $stmt->prepare($sql);
    $stmt->bind_param('i', $key);
    $ok = $stmt->execute();
    $stmt->bind_result($trackid, $name);

    if( VALUES FOUND, SHOW !) {

        while ($stmt->fetch()) {
            echo $t_name;
        }

    } else {
        echo 'Nothing to display... blablabla';
    }

    $stmt->free_result(); // free the database resources for other queries
}
...

【问题讨论】:

    标签: php mysqli


    【解决方案1】:

    【讨论】:

    • 我已经阅读了有关该方法的信息...但是,我希望有一个解决方案不会缓冲语句句柄中的整个结果集...我发布问题的原因.如果没有其他方法,我想我将别无选择缓冲结果集...
    • @Marco: 1) 你为什么没有在问题中指定???? 2)如果您在问题中发布的代码中使用它,它不起作用吗?
    • @Marco .. 但是缓冲有什么问题?如果它们在那里,您将显示它们。如果什么都没有,那么就没有什么可以缓冲的了。
    • @zerkms:对此感到抱歉..我同意,我应该在我原来的问题中指定这一点
    • @Marco:无论如何,我同意 Phil:你能解释一下你在使用缓冲区时遇到了什么问题吗?
    【解决方案2】:
    /* execute query */
    $stmt->execute();
    
    /* store result */
    $stmt->store_result();
    
    printf("Number of rows: %d.\n", $stmt->num_rows);
    

    【讨论】:

      猜你喜欢
      • 2017-10-08
      • 1970-01-01
      • 1970-01-01
      • 2013-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-30
      • 1970-01-01
      相关资源
      最近更新 更多