为什么存储过程不运行?

时间:2017-07-31 07:05:03

标签: php mysql stored-procedures sql-update

代码带来了相应的参数并且没有显示任何错误或异常,我不知道它为什么不执行存储过程中的编程,帮助!

这是MySQL中的存储过程:

DELIMITER //
DROP PROCEDURE IF EXISTS prueba.CAMBIA_A_ACTIVO //
CREATE PROCEDURE CAMBIA_A_ACTIVO
( 
    IN  _email VARCHAR(45),
    IN _nombre_grupo VARCHAR(80)
) 
BEGIN
 UPDATE INTEGRATES_GRUPOS SET activo = 1
 WHERE nombre_grupo = _nombre_grupo 
 AND email = _email;
END; //  

这是php代码:

<?php

require_once('connection.php');

class CAMBIA_A_ACTIVO
{
    public function __construct($email, $nombre_grupo)
    { 
        try
            { 
                $mysql = new connection();
                $conexion = $mysql -> get_connection(); 
                $datos = array("email" => "$email", "nombre_grupo" => "$nombre_grupo"); 
                $statement = $conexion->prepare("CALL CAMBIA_A_ACTIVO(?,?)"); 
                $statement -> bind_param("ss", $datos["email"], $datos["nombre_grupo"]); 
                $statement -> execute(); 
                $statement -> close();
                $conexion -> close();   
            } catch (Exception $e)
                  {echo $e->getMessage();}
    }
}
?>

1 个答案:

答案 0 :(得分:0)

在执行流程中有一些点可以测试成功或失败 - 因为代码设置为捕获异常,如果出现问题,可以使用此类逻辑测试来引发新的异常。

当从命令行或gui?

调用时,推测实际的stored procedure是有效的
<?php
    require_once('connection.php');
    class CAMBIA_A_ACTIVO {
        public function __construct($email, $nombre_grupo){ 
            try { 
                $mysql = new connection();
                $conexion = $mysql->get_connection(); 

                if( $conexion ){
                    $datos = array("email" => "$email", "nombre_grupo" => "$nombre_grupo"); 
                    $statement = $conexion->prepare("CALL CAMBIA_A_ACTIVO(?,?)");

                    if( !$statement )throw new Exception('Failed to prepare SQL statement');
                    else {

                        $statement->bind_param("ss", $datos["email"], $datos["nombre_grupo"]); 
                        $result=$statement->execute();
                        $statement->close();
                        $conexion->close();

                        if( !$result )throw new Exception('Query failed');
                    }
                } else {
                    throw new Exception('Connection to db failed');
                }
            } catch (Exception $e){
                echo $e->getMessage();
            }
        }
    }
?>