使用php返回多个值(变量)

wvt8vs2t  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(338)

这个问题在这里已经有答案了

函数的多次返回(31个答案)
去年关门了。
你好,我在做一个函数,它应该返回一个数据库结果集,以及查询检索数据所用的时间。很好,但我不知道如何返回时间和结果集,并使它们在视图中可用。谢谢你的帮助。
我的代码如下所示:

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>
osh3o9ms

osh3o9ms1#

你需要返回一个数组。也许把它加到 $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;
eufgjt7s

eufgjt7s2#

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

/* 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;
}

相关问题