2012-08-25 19 views
11

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

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

行が最後かどうかを確認するのは難しいです。どのようにそれを行うにはどのようなアイデア?ありがとう。

+1

してください、新しいコードのために 'mysql_ *'関数を使用しないでください。それらはもはや維持されず、コミュニティは[廃止プロセス](http://goo.gl/KJveJ)を開始しました。 [** red box **](http://php.net/manual/en/function.mysql-pconnect.php)を参照してください。代わりに、[準備完了声明](http://goo.gl/vn8zQ)について学び、[PDO](http://php.net/pdo)または[MySQLi](http://php.net/)を使用する必要があります。 mysqli)。あなたが決定できない場合、[この記事](http://goo.gl/3gqF9)が選択に役立ちます。あなたが学ぶ気があるなら、[ここでは良いPDOのチュートリアルです](http://goo.gl/vFWnC)。 –

答えて

36

あなたはmysql_num_rows()前に、あなたのwhileループに使用して、あなたの状態のためにその値を使用することができます。

$numResults = mysql_num_rows($result); 
$counter = 0 
while ($row = mysql_fetch_array($result)) { 
    if (++$counter == $numResults) { 
     // last row 
    } else { 
     // not last row 
    } 
} 
8
$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++; 
} 
+1

+1はPDOに言及し、実際にはPDOソリューションを投稿しています – Phil

0

カウンターを持ってみwhileループ内でチェックしてからmysql_num_rows()

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'; 
    } 
} 
1
$allRows = $stmt->rowCount(); 

は、私のために働く使用していたしませんでした:

$numResults = $result->num_rows; 
関連する問題