Php - Mysql存储过程不返回数据

时间:2016-01-20 07:07:11

标签: php mysql json stored-procedures

我正在一个涉及Php - Mysql的项目中工作。我在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()并使用数据返回数组),但是当我尝试将所述数据存储在{使用$output的{​​1}}变量,它可以说“消失”。

我有几个其他程序只是更改表名完全相同的东西,这些程序没有任何问题。

编辑:我还检查了json_encode()中的日志,看看服务器是否报告了任何错误,但没有出现任何排序。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

要存储响应,您需要创建一个数组,为您的数组提供while循环值,然后使用json_encode

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

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

$output = json_encode($output);