2017-07-31 62 views
0

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

这是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();} 
    } 
} 
?> 
+0

检查错误,在'prepare'和'execute'调用之后添加'或die($ conexion-> error);''。 – Barmar

+0

mysqli在发生错误时不会抛出异常。 – Barmar

+0

不存在错误或异常。 –

回答

0

还有的exection流在那里你可以测试成功或失败中的某些点 - 由于代码设置为捕获异常,因此如果出现问题,可以使用此类逻辑测试来引发新的异常。

推测实际上stored procedure工作时从命令行或gui?

<?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(); 
      } 
     } 
    } 
?> 
+0

我执行的代码,但没有出现错误或例外,代码不执行存储过程... –

+0

你用mysqli_error()检查MySql自己的错误信息(https://stackoverflow.com/ a/17053501/2610061)? – cars10m

相关问题