2016-01-20 53 views
1

我正在一個涉及Php-Mysql的項目中工作。我有以下存儲過程在MySQL: `Php - Mysql存儲過程不返回數據

CREATE PROCEDURE alumnos_get_alumno(IN ci INT UNSIGNED) 
    READS SQL DATA 
BEGIN 
    SELECT idalumnos, CONVERT(primer_nombre USING utf8) AS primer_nombre, 
      CONVERT(segundo_nombre USING utf8) AS segundo_nombre, 
      CONVERT(tercer_nombre USING utf8) AS tercer_nombre, 
      CONVERT(primer_apellido USING utf8) AS primer_apellido, 
      CONVERT(segundo_apellido USING utf8) AS segundo_apellido, 
      fecha_nac, estado_actual 
    FROM alumnos WHERE idalumnos = ci; 
END` 

,我把它從下面的PHP腳本:現在

$config= parse_ini_file("../config/cole.ini"); 
$connect= mysqli_connect("localhost", $config['username'], $config['password'], $config['dbname']) or die("NO DB Connection"); 

$getparams = filter_input_array(INPUT_GET); 
$query = "CALL alumnos_get_alumno(".$getparams['c'].")"; 
$result = mysqli_query($connect, $query); 
$cuantos = mysqli_num_rows($result); 
if ($cuantos != 0){ 
    while ($row = mysqli_fetch_assoc($result)){ 
      $output = json_encode($row); 
    } 
} else { 
    $output = 0; 
} 
echo $output; 

,問題是執行PHP腳本的時候,我得到一個空的迴應。

我試着調試Firebug的腳本執行,居然看到該程序不會返回數據(與print_r()嘗試和回來的數據數組),但是當我嘗試存儲使用json_encode()$output可變數據說可以這麼說,它「消失」了。

我有幾個其他程序是完全相同的東西,只是改變表名,而那些工作沒有任何問題。

編輯:我也檢查了日誌/var/log/apache2/err.log,看看是否有任何錯誤報告的服務器,但沒有出現類似的。

我在這裏錯過了什麼?

回答

1

要存儲的響應,你需要創建一個數組while循環值assing到數組,然後使用json_encode

$output = array(); 
if ($cuantos != 0) { 

    while ($row = mysqli_fetch_assoc($result)) { 
     $output[] = $row; 
    } 
} else { 
    $output[] = 0; 
} 

$output = json_encode($output); 
+0

謝謝您的回答,我想你的建議,但得到一個空數組作爲響應。 'print_r($ row)'的結果是:Array([idalumnos] => 1 [primer_nombre] => JOHNNY [segundo_nombre] => B [tercer_nombre] => [primer_apellido] => GOODE [segundo_apellido] => DUDE [ fecha_nac] => 1999-10-07 [estado_actual] => A) –

+1

Ahh我不好使用'$ output [] = $ row;'while while while循環!檢查更新的答案! – Saty

+0

你有沒有檢查更新的答案??? – Saty