代码带来了相应的参数并且没有显示任何错误或异常,我不知道它为什么不执行存储过程中的编程,帮助!
这是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 :(得分: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();
}
}
}
?>