19

PHPに関して、これがMySQLの最後の行であるかどうかを確認するための簡単な質問があります。たとえば、私はこのコードを持っています:

$result = mysql_query("SELECT *SOMETHING* ");

while($row = mysql_fetch_array($result))
{
if (*this is the last row*)
{/* Do Something Here*/}
else
{/* Do Another Thing Here*/}
}

行が最後かどうかを確認するのが難しいです。それを行う方法はありますか?ありがとう。

4

6 に答える 6

50

mysqli_num_rows()ループの前に使用してからwhile、その値を条件に使用できます。

$numResults = mysqli_num_rows($result);
$counter = 0
while ($row = mysqli_fetch_array($result)) {
    if (++$counter == $numResults) {
        // last row
    } else {
        // not last row
    }
}
于 2012-08-25T17:01:21.483 に答える
11
$result = mysql_query("SELECT *SOMETHING* ");

$i = 1;
$allRows = mysql_num_rows($result);
while($row = mysql_fetch_array($result)){

    if ($allRows == $i) {
        /* Do Something Here*/
    } else {
        /* Do Another Thing Here*/}
    }
    $i++;
}

ただし、PDOを考慮してください

$db = new PDO('mysql:host=localhost;dbname=testdb', 'username', 'password');
$stmt = $db->query("SELECT * FROM table");
$allRows = $stmt->rowCount();
$i = 1;
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {

    if ($allRows == $i) {
        /* Do Something Here*/
    } else {
        /* Do Another Thing Here*/}
    }
    $i++;
}
于 2012-08-25T17:01:39.577 に答える
3
$allRows = $stmt->rowCount();

私のために働いていませんでした、使用しなければなりませんでした:

$numResults = $result->num_rows;
于 2015-10-22T15:09:40.013 に答える
2

これを試して:

$result = mysql_query("SELECT colum_name, COUNT(*) AS `count` FROM table");

$i = 0;

while($row = mysql_fetch_assoc($result))
{
    $i++;

    if($i == $row['count'])
    {
        echo 'last row';
    }
    else
    {
        echo 'not last row';
    }
}
于 2012-08-25T17:02:51.810 に答える
0

whileループ内にカウンターを配置し、それをチェックしてみてくださいmysql_num_rows()

于 2012-08-25T17:02:23.173 に答える
0
$result = //array from the result of sql query.
$key = 1000; 
$row_count = count($result); 
if($key)
{
    if($key == $row_count-1)  //array start from 0, so we need to subtract.
    {
       echo "Last row";             
    }
    else
    {
       echo "Still rows are there";             
    }
}
于 2019-01-25T06:54:20.113 に答える