PHP - Procedimiento almacenado funciona desde phmyadmin pero no desde PHP

 
Vista:

Procedimiento almacenado funciona desde phmyadmin pero no desde PHP

Publicado por Javier A. Egidi Vega (1 intervención) el 29/08/2018 23:54:44
Hola! soy nuevo en el foro. Quizás deba abrir un nuevo hilo, pero por mi condición de novato no puedo hacerlo.
Mi problema es que ejecutando el procedimiento almacenado desde phpmyadmin, el mismo funciona correctamentame. No así es el caso cuando lo quiero ejecutar a través de PHP. Vengo hace meses buscando la solución sin poder llegar a ella.
Mi procedimiento almacenado es:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
PROCEDURE `agregarNuevaAsistencia` (IN `nroEmpleado` INT, IN `contraseEmpleado` VARCHAR(50)) MODIFIES SQL DATA
DETERMINISTIC
BEGIN
 
 
DECLARE contraseniaE VARCHAR(50) DEFAULT '';
DECLARE idEmp INTEGER DEFAULT '0';
DECLARE idEAUX INTEGER DEFAULT '0';
DECLARE horaActual TIME;
DECLARE diaHoy DATE;
 
 
SET idEmp=(SELECT idEmpleado FROM empleado WHERE idEmpleado=nroEmpleado);
SET contraseniaE=(SELECT contrasenia FROM empleado WHERE idEmpleado=nroEmpleado);
SET horaActual=(SELECT NOW());
SET diaHoy=(SELECT CURDATE());
 
call actualizarSistema;
SELECT 'HOLA1';
SELECT nroEmpleado;
SELECT contraseEmpleado;
SELECT contraseniaE;
SELECT idEmp;
/*VERIFICO QUE EL EMPLEADO EXISTA*/
IF(contraseEmpleado=contraseniaE)AND(idEmp=nroEmpleado)THEN
SELECT 'HOLA2';
/*TRATA EL CASO DE UNA ENTRADA-SALIDA MATUTINA*/
IF(horaActual>'06:00:00')AND(horaActual<'14:00:00') THEN
/*SI YA SE REGISTRO, SOLO ACTUALIZO LA HORA DE EGRESO*/
SET idEAUX=(SELECT idEMPLEADO FROM planillaManana WHERE (idEmpleado=nroEmpleado AND fecha=diaHoy));
/*EL EMPLEADO YA TIENE HORA DE INGRESO: FALTA ACTUALIZAR LA DE EGRESO */
IF (idEAUX=nroEmpleado)THEN
UPDATE `planillamanana` SET `horaEgreso`=CURTIME() WHERE (idEmpleado=nroEmpleado AND fecha=diaHoy);
/*SINO AGREGO LA ASISTENCIA*/
ELSE
     INSERT INTO planillaManana(fecha, horaIngreso, horaEgreso, idEmpleado) VALUES (CURDATE(), CURTIME(), CURTIME(), nroEmpleado);
END IF;
END IF;
 
 
 
/*TRATA EL CASO DE UNA ENTRADA-SALIDA VESPERTINO*/
IF(horaActual>='14:00:00')AND(horaActual<'24:00:00') THEN
/*SI YA SE REGISTRO, SOLO ACTUALIZO LA HORA DE EGRESO*/
SET idEAUX=(SELECT idEMPLEADO FROM planillaTarde WHERE (idEmpleado=nroEmpleado AND fecha=diaHoy));
/*EL EMPLEADO YA TIENE HORA DE INGRESO: FALTA ACTUALIZAR LA DE EGRESO */
IF (idEAUX=nroEmpleado)THEN
UPDATE `planillaTarde` SET `horaEgreso`=CURTIME() WHERE (idEmpleado=nroEmpleado AND fecha=diaHoy);
/*SINO AGREGO LA ASISTENCIA*/
ELSE
     INSERT INTO planillaTarde(fecha, horaIngreso, horaEgreso, idEmpleado) VALUES (CURDATE(), CURTIME(), CURTIME(), nroEmpleado);
END IF;
END IF;
END IF;



Si ejecuto CALL agregarNuevaAsistencia(1,'javier') desde la consola de phpmyadmin funciona correctamente, no así desde PHP. En este último caso no lanza error de ningún tipo pero no realiza la inserción. El procedimiento registra el horario de ingreso-egreso de empleados de una firma.

Código PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?php
include("datos_para_conexion.php");
 
 
$codigoBarraEmp=$_POST['codBarra'];
$idEmp=0;
 
 
 
 
$mysqli = new mysqli($host, $user, $pw, $bd);
 
 
/* verificar la conexión */
if (mysqli_connect_errno()) {
printf("Conexión fallida: %s\n", mysqli_connect_error());
exit();
}else{
 
 
/* $result=$mysqli->query("CALL agregarNuevaAsistencia(1,'javier') ");*/
echo "HHHHHHHHHHHHHHHHHHHHHHHHHS";
if ($result = $mysqli->query("SELECT e.idEmpleado, e.nombreEmpleado, e.apellidoEmpleado, e.observaciones, e.contrasenia FROM empleado as e WHERE (e.codigoBarra='$codigoBarraEmp')")) {
/* determinar el número de filas del resultado */
$row_cnt = $result->num_rows;
//printf("Result set has %d rows.\n", $row_cnt);
if($row_cnt>0)
{
 
while($reg=mysqli_fetch_array($result))
{
 
$nombre=$reg['nombreEmpleado'];
$apellido=$reg['apellidoEmpleado'];
$observaciones=$reg['observaciones'];
$contrasenia=$reg['contrasenia'];
$idEmp=$reg['idEmpleado'];
echo "Nombre y apellido: ".$nombre." ".$apellido."</br>";
echo "Ocupacion: ".$observaciones." </br>";
echo "Horario de marcado: ".""."</br>";
echo "contrasenia: ".$contrasenia."</br>";
echo "id: ".$idEmp."</br>";
}
 
 
 
if($result1 = $mysqli->query("CALL agregarNuevaAsistencia('$idEmp','$contrasenia')")){
echo "Asistencia registrada correctamente";
echo "CALL agregarNuevaAsistencia($idEmp, '$contrasenia')";
$result1->close();*/
 
 
}else{
    echo "No se pudo realizar la operacion";
 
 
 
 
}*/
 
}else{
    echo "<p> <span class='blink_text'> ERROR </span></marquee>. Empleado inexistente o intento de registro en horario no válido. Ingrese nuevo empleado o revise la identificación del mismo.</p> ";
}
/* cerrar el resultset 
$result->close();*/
 
}
 
 
/* cerrar la conexión*/
 
    $mysqli->close();
 
}
?>
GRACIAS Y ESPERO UNA PRONTA RESPUESTA!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder