捕获查询中的第一行和最后一行到PHP变量

时间:2016-12-30 12:21:32

标签: php

我正在回显页面上的所有行以查询我的。

我还需要将第一行和最后一行捕获到PHP变量中进行计算。

db = new mysqli('server','username','password','database'); 

$resource = $db->query("SELECT . . . (my query, not wanting to modify this)");

我可以把最后一行放到像这样的变量中。

$numResults  = $resource->num_rows;
$counter = 0;
while ( $rows = $resource->fetch_assoc() ) {
if (++$counter == $numResults) {
$lastrow = $rows['column'];
}

我可以像这样获取php变量的第一行。

$first = mysqli_fetch_assoc($resource);
$firstrow = $first['column'];

但它似乎只允许我做一个或另一个。

如果我注释掉第一个代码块以获取$lastrow,我的第二个代码块$firstrow会显示出来。 如果我注释掉第二个代码块以获取$firstrow,我的第一个获取$lastrow的阻止就出现了。

任何人都知道我可以使用的任何技巧,以便我可以使用PHP将$firstrow$lastrow同时放入同一页面的变量中吗?

3 个答案:

答案 0 :(得分:1)

如果您的上述代码有效,请尝试按照

$numResults  = $resource->num_rows;
$counter = 0;
while ( $rows = $resource->fetch_assoc() ) {

   if ($counter == 0) {
       $firstrow = $rows['column'];
   } 

   if (++$counter == $numResults) {
      $lastrow = $rows['column'];
   }

}

答案 1 :(得分:1)

有几种方法可以做到这一点。以下是其中两个。

1)与您的示例类似 - 这很容易理解,因为它使用while循环和if结构
$firstRow = $resource->fetch_assoc();
$lastRow = NULL;
while ( $rows = $resource->fetch_assoc() ) {
    $lastRow = $rows;
}
if(!isset($lastRow)) $lastRow = $firstRow;
2)使用mysqli_data_seek - http://php.net/manual/en/mysqli-result.data-seek.php
// First Row
$resource->data_seek(0);
$firstRow = $resource->fetch_assoc();
// Last Row
$resource->data_seek($resource->num_rows - 1);
$lastRow = $resource->fetch_assoc();

答案 2 :(得分:0)

这很简单......行就像数组!!!

当您在{ "name": "test", "version": "1.0.0", "main": "main.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "devDependencies": { "babel-core": "^6.3.17", "babel-loader": "^6.2.0", "babel-preset-es2015": "^6.3.13", "babel-preset-react": "^6.3.13", "babel-runtime": "^6.3.19", "webpack": "^1.12.9" }, "dependencies": { "bootstrap": "^3.3.7", "chart.js": "^2.4.0", "fixed-data-table": "^0.6.0", "jquery": "^3.1.0", "react": "^0.14.3", "react-dom": "^0.14.3", "vis": "^4.17.0" }, "description": "" } ...

中获得行数时

第一行 - $numResults 最后一行 - $rows[0]

完全尝试以下..

$rows[$numresults-1]

希望这会有所帮助......