我正在一个涉及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()
中的日志,看看服务器是否报告了任何错误,但没有出现任何排序。
我在这里缺少什么?
答案 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);