I require that the id ( id_servicios ) of my table servicios
contain the attribute unsigned zerofill
of MySQL, until here, everything is fine. The problem arises when I return the query data with PHP, the id_servicios returns a value without the zeros that I require to have a numeric value of 11 characters.
Image / Query
MySql query
SELECT svcs.id_servicios,
svcs.llamada_servicio,
svcs.codigo_autorizacion_servicio,
svcs.fecha_servicio,
svcs.hora_servicio,
empr.id_empresa,
empr.nombre_empresa,
pnal.id_personal,
pnal.nombre_personal,
pnal.telefono_personal,
pnal.celular_personal,
svcs.id_tipo_servicio,
tser.nombre_tipo_servicio,
svcs.cantidad_movil,
svcs.direccion_origen_servicio,
corg.nombre_comuna_origen,
svcs.direccion_destino_servicio,
cdes.nombre_comuna_destino,
svcs.observacion_servicio,
svcs.fecha_generacion_servicio,
esrv.nombre_estado_servicio,
prna.numero_movil_persona
FROM servicios svcs
INNER JOIN empresa empr
ON empr.id_empresa = svcs.id_convenio_servicio
INNER JOIN personal pnal
ON pnal.id_personal = svcs.id_personal_servicio
INNER JOIN tipo_servicio tser
ON tser.id_tipo_servicio = svcs.id_tipo_servicio
INNER JOIN comuna_origen corg
ON corg.id_comuna_origen = svcs.id_comuna_origen_servicio
INNER JOIN comuna_destino cdes
ON cdes.id_comuna_destino = svcs.id_comuna_destino_servicio
INNER JOIN estado_servicio esrv
ON esrv.id_estado_servicio = svcs.id_estado_servicio
LEFT JOIN persona prna
ON prna.id_persona = svcs.id_movil_servicio
ORDER BY svcs.id_servicios DESC
PHP Code
<?php
//Declaracion de cabeceras del sistema
header("Context-type: application/json;");
//Inclusion del archivo respectivo para la conexion con la BD
require '../conexion.php';
//Declaracion del array para codificar en formato JSON la variable mensaje
$resultado = array();
//Evaluamos si la conexion a la BD se realiza correctamente
if ($mysqli)
{
//Objeto convertido a formato UTF8 para insertar caracteres especiales en la BD del sistema
$mysqli->set_charset('utf8');
//Prepramos la consulta para INSERTAR datos en a BD a la tabla empresa
$sql = "SELECT svcs.id_servicios,
svcs.llamada_servicio,
svcs.codigo_autorizacion_servicio,
svcs.fecha_servicio,
svcs.hora_servicio,
empr.id_empresa,
empr.nombre_empresa,
pnal.id_personal,
pnal.nombre_personal,
pnal.telefono_personal,
pnal.celular_personal,
svcs.id_tipo_servicio,
tser.nombre_tipo_servicio,
svcs.cantidad_movil,
svcs.direccion_origen_servicio,
corg.nombre_comuna_origen,
svcs.direccion_destino_servicio,
cdes.nombre_comuna_destino,
svcs.observacion_servicio,
svcs.fecha_generacion_servicio,
esrv.nombre_estado_servicio,
prna.numero_movil_persona
FROM servicios svcs
INNER JOIN empresa empr
ON empr.id_empresa = svcs.id_convenio_servicio
INNER JOIN personal pnal
ON pnal.id_personal = svcs.id_personal_servicio
INNER JOIN tipo_servicio tser
ON tser.id_tipo_servicio = svcs.id_tipo_servicio
INNER JOIN comuna_origen corg
ON corg.id_comuna_origen = svcs.id_comuna_origen_servicio
INNER JOIN comuna_destino cdes
ON cdes.id_comuna_destino = svcs.id_comuna_destino_servicio
INNER JOIN estado_servicio esrv
ON esrv.id_estado_servicio = svcs.id_estado_servicio
LEFT JOIN persona prna
ON prna.id_persona = svcs.id_movil_servicio
ORDER BY svcs.id_servicios DESC";
$consultar_servicio = $mysqli->prepare($sql);
if ($consultar_servicio->execute())
{
$result = $consultar_servicio->get_result();
$data_area = array();
while($row = $result->fetch_array(MYSQLI_ASSOC))
{
$data_area[] = $row;
};
echo json_encode($data_area);
}
else
{
$resultado['mensaje'] = "Ha ocurrido un error: " . $mysqli->error;
echo json_encode($resultado);
}
}
else
{
$resultado['mensaje'] = "No hay conexión a la BD";
}
?>
Image / JSON
Expected value in JSON / PHP
Next, I show with this code that the attribute actually returns correctly, but because it is a form of insecure programming, I discard it, so now I want to go deeper into why this happens?
<?php
header("Context-type: application/json;");
require '../conexion.php';
$mysqli->set_charset('utf8');
$resultado = $mysqli->query("SELECT svcs.id_servicios,
svcs.llamada_servicio,
svcs.codigo_autorizacion_servicio,
svcs.fecha_servicio,
TIME_FORMAT(svcs.hora_servicio,'%H:%i %p') AS hora_servicio,
svcs.fecha_final_servicio,
empr.id_empresa,
empr.nombre_empresa,
pnal.id_personal,
pnal.nombre_personal,
pnal.telefono_personal,
pnal.celular_personal,
svcs.id_tipo_servicio,
tser.nombre_tipo_servicio,
svcs.cantidad_movil,
svcs.direccion_origen_servicio,
corg.nombre_comuna_origen,
svcs.direccion_destino_servicio,
cdes.nombre_comuna_destino,
svcs.observacion_servicio,
svcs.fecha_generacion_servicio,
esrv.nombre_estado_servicio,
prna.numero_movil_persona
FROM servicios svcs
INNER JOIN empresa empr
ON empr.id_empresa = svcs.id_convenio_servicio
INNER JOIN personal pnal
ON pnal.id_personal = svcs.id_personal_servicio
INNER JOIN tipo_servicio tser
ON tser.id_tipo_servicio = svcs.id_tipo_servicio
INNER JOIN comuna_origen corg
ON corg.id_comuna_origen = svcs.id_comuna_origen_servicio
INNER JOIN comuna_destino cdes
ON cdes.id_comuna_destino = svcs.id_comuna_destino_servicio
INNER JOIN estado_servicio esrv
ON esrv.id_estado_servicio = svcs.id_estado_servicio
LEFT JOIN persona prna
ON prna.id_persona = svcs.id_movil_servicio
ORDER BY svcs.id_servicios DESC");
$dataServicios = array();
while ($row = $resultado->fetch_assoc())
{
$dataServicios[] = $row;
}
echo json_encode($dataServicios);
?>
Result
[{"id_servicios":"000000000007"},{"id_servicios":"000000000006"},{"id_servicios":"000000000005"},{"id_servicios":"000000000004"},{"id_servicios":"000000000003"},{"id_servicios":"000000000002"},{"id_servicios":"000000000001"}]
What could you correct to get the correct value of the query?