2013-11-04 77 views
1

這裏是存儲過程正從存儲過程found_records的值與事先準備好的聲明

DELIMITER $$ 
BEGIN 

SET @sql = concat(@sql ,'SELECT SQL_CALC_FOUND_ROWS '); 
SET @sql = concat(@sql ,';'); 

prepare stmt from @sql; 
execute stmt; 
deallocate prepare stmt; 

SELECT found_rows(); 
END 

調用存儲過程中的PHP。

$mysqli = new mysqli($databaseHostname1, $databaseUsername, $databasePassword); 
if(!$mysqli) die('Could not connect: ' . mysql_error()); 

mysqli_select_db($mysqli, '$db'); 
if(!$mysqli) die('Could not connect to DB: ' . mysql_error()); 

if ($keywordParam != ''){ 
$mysqli->query("SET @p_keywordParam = " . "'" . $mysqli->real_escape_string($keywordParam) . "'"); 
}else{ 
$mysqli->query("SET @p_keywordParam = NULL"); 
} 

$mysqli->query("SET @p_pageOffset = $pageOffset"); 

$result = $mysqli->query("CALL getInventory2(@p_keywordParam,@p_pageOffset)"); 
if(!$result) die("CALL failed: (" . $mysqli->errno . ") " . $mysqli->error); 

我然後輸出的數據

NUMBER OF RESULTS: <? echo <<<<<<< FOUND ROWS HERE >>>>>>>>> ?> 
PAGE 1 of ? 


while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) 
<? echo $row['FIRST_NAME']; ?> 
<? echo $row['LAST NAME']; ?> 

我需要的是在FOUND_ROWS從存儲過程while循環之前計數,使得我可以設置分頁。

回答

0

只需運行查詢後,運行該之一:

SELECT FOUND_ROWS()AS int_count

+0

在存儲過程或從PHP另一個呼叫□,已經在SELECT FOUND_ROWS SP。 – Kevin

+0

只需運行沒有找到的行的第一個查詢,然後執行它。完成後,運行第二個查詢,查找所有行。這是我如何與MySQL做,所以我猜它不應該在mysqli太不同! – mokk

+0

在PHP頁面上運行所有內容時,我能夠實現正確的結果,即調用存儲過程的時間。你是在調用一個SP,還是直接在php頁面上調用查詢。 – Kevin