【问题标题】:return multiple values (variables) with PHP [duplicate]使用PHP返回多个值(变量)[重复]
【发布时间】:2019-01-31 02:04:36
【问题描述】:

你好,我正在研究一个函数,它应该返回一个数据库结果集以及查询检索数据所花费的时间。效果很好,但我不知道如何返回时间和结果集并使它们在视图中可用。感谢您的帮助。

我的代码如下所示:

public function getNumResults($term) {

   /* Count query Execution */
   $starttime = microtime(true);

   $query = $this->con->prepare("SELECT COUNT(*) as total
       FROM sites WHERE title LIKE :term
       OR url LIKE :term
       OR keywords LIKE :term
       OR description LIKE :term");

   $endtime = microtime(true);

   /* Calculates total time taken */
   $duration = $endtime - $starttime;

   $searchTerm = "%". $term . "%";
   $query->bindParam(":term", $searchTerm);
   $query->execute();

   $row = $query->fetch(PDO::FETCH_ASSOC);

   return $row["total"];

}

在视图中我像这样返回结果集:

<div class="mainResultSection">
        <?php
          $resultsProvider = new SearchResultsProvider($con);
          $numResults = $resultsProvider->getNumResults($term);
          /* Not working */
          $timeResults = $resultsProvider->getNumResults($term)->duration;
          echo "<p class='resultsCount'>$numResults results found. In $timeResults <p>";
        ?>
      </div>

【问题讨论】:

  • 既然你只能return一件事,就把它们都放在一个数组中并返回数组。
  • 您的微时间不考虑实际查询阶段。另外,为什么不将其作为搜索对象的属性?
  • 我想过写另一种方法,但我不确定这是否会延长函数计算请求的时间,所以我最终得到了更长的时间它曾经是......
  • 你放弃了吗???
  • nooooo ????进一步@AbraCadaver

标签: php mysql database resultset multiple-resultsets


【解决方案1】:

你需要返回一个数组。也许只需将其添加到$row。另外,您需要在查询之前获取开始时间并在之后获取结束时间:

   //other code

   $starttime = microtime(true);
   $query->execute();
   $endtime = microtime(true);
   $row = $query->fetch(PDO::FETCH_ASSOC);
   $row["duration"] = $endtime - $starttime;

   return $row;

或者对于您当前的代码,您可以将其添加到对象变量中:

   $this->duration = $endtime - $starttime;

然后访问:

   $timeResults = $resultsProvider->duration;

【讨论】:

    【解决方案2】:

    太没有经验了。我使用另一个函数来获取持续时间。但是给出的其他答案有很大帮助。谢谢,这里的最终代码工作:

    /* Time to get results */
    public function getTimeResult($term){
       $query = $this->con->prepare("SELECT COUNT(*) as total
            FROM sites WHERE title LIKE :term
            OR url LIKE :term
            OR keywords LIKE :term
            OR description LIKE :term"
       );
    
       $searchTerm = "%". $term . "%";
       $query->bindParam(":term", $searchTerm);
    
       $starttime = microtime(true);
       $query->execute();
       $endtime = microtime(true);
    
       /* Calculates total time taken */
       $duration = $endtime - $starttime;
    
       return $duration;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-03
      • 1970-01-01
      • 2015-07-04
      • 1970-01-01
      • 1970-01-01
      • 2016-01-18
      • 2015-06-26
      • 1970-01-01
      相关资源
      最近更新 更多