2017-08-23 34 views
1
CREATE PROCEDURE `prev1`(IN `page` INT(50), OUT `foundrows` INT(255)) 
BEGIN DECLARE foundrows varchar(255); 
SELECT SQL_CALC_FOUND_ROWS * FROM studentmarks limit page ,6; 
SELECT FOUND_ROWS()as foundrows; 
END 

這是我的PHP代碼我在存儲過程使用兩個IN和OUT param其中,我得到兩個結果,我希望兩個結果PHP

$pag=$_GET["offset"]; 
$sql="call prev1($pag,@foundrows)"; 
$result = mysqli_query($conn,$sql); 

我的回答是

mysqli_result Object 
( [current_field] => 0 
    [field_count] => 13 
[lengths] => 
    [num_rows] => 6 
[type] => 0 
) 

但我found_rows沒有得到在php。但我的總FOUND_ROWS是19,但僅示出[NUM_ROWS] => 6

+0

你的意思是「但我found_rows進入php。」 ?你可以說得更詳細點嗎 ? –

+0

但我的found_rows沒有得到在PHP。但我的總found_rows是19,但只顯示[num_rows] => 6 – knight007

+0

首先,嘗試直接sql查詢具有相同的值,以確保它確實是19. –

回答

1

要使用存儲的過程返回一個值:
SQL:

DELIMITER // 
CREATE PROCEDURE prev1(IN `page` INT, OUT `Out_val` INT) 
BEGIN 
    SELECT SQL_CALC_FOUND_ROWS * FROM studentmarks limit page ,6; 
    SELECT FOUND_ROWS() INTO Out_val; 
END // 
DELIMITER ; 

PHP代碼:

<?php 
error_reporting(-1); 
ini_set('display_errors', 'On'); 

?> 
<!DOCTYPE html> 
<html> 
<body> 

<?php 
$servername = "localhost"; 
$username = "root"; 
$password = "password"; 
$dbname = "dbname"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$pag = 1; 
$conn->multi_query("CALL prev1($pag,@Out_val);SELECT @Out_val as count"); 
do { 
    /* store first result set */ 
    if ($result = $conn->store_result()) { 
     while ($row = $result->fetch_row()) { 
      print_r($row); 
     } 
     $result->free(); 
    } 
    /* print divider */ 
    if ($conn->more_results()) { 
     printf("-----------------\n"); 
    } 
} while ($conn->next_result()); 

?> 

</body> 
</html> 

我希望這會有所幫助。

+0

其不工作.... – knight007

+0

@vijaykumar我更新了我的答案,我也測試了我的本地系統中的代碼,它的工作正常。請檢查。 可能你可以單獨嘗試一個獨立的腳本代替在你的項目中放置代碼。 – Naincy

+0

嗨..我需要兩個響應1)極限查詢2)和FOUND_ROWS()在相同的PHP – knight007

相關問題