2016-01-20 48 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