2017-07-31 94 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