У меня есть простой вопрос относительно 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*/} }
Мне трудно проверить, является ли строка последней или нет. Есть идеи, как это сделать? Благодарю.
Вы можете использовать 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 } }
$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++; }
Попробуй это:
$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'; } }
$allRows = $stmt->rowCount();
Не работал для меня, пришлось использовать:
$numResults = $result->num_rows;
Попробуйте иметь счетчик внутри цикла while и затем проверять его на mysql_num_rows()