gpt4 book ai didi

php - MySQL 存储过程无法从 ajax/php 运行

转载 作者:行者123 更新时间:2023-11-30 22:29:59 24 4
gpt4 key购买 nike

我在 MySQL 中有以下存储过程:

CREATE DEFINER=`root`@`localhost` PROCEDURE `bancos_remove`(IN `id`
INT, IN `cb` INT)
BEGIN
DECLARE nomban VARCHAR(50);
DECLARE cuanban INT DEFAULT 0;
DECLARE codigo CHAR(5) DEFAULT '00000';
DECLARE mensaje VARCHAR(256);
DECLARE respuesta VARCHAR(512) DEFAULT '00000';
DECLARE texto VARCHAR(512);
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
BEGIN
GET DIAGNOSTICS CONDITION 1
codigo = RETURNED_SQLSTATE,
mensaje = MESSAGE_TEXT;
SET respuesta = CONCAT(codigo,' - ',mensaje);
END;
SELECT nombre INTO nomban FROM bancos WHERE idbancos = cb;
SELECT COUNT(*) INTO cuanban FROM bancos_cuentas WHERE idbancos
= cb;
IF cuanban > 0 THEN
SIGNAL SQLSTATE '90000' SET MESSAGE_TEXT = 'Banco tiene Cuentas Asociadas';
ELSE
DELETE FROM bancos WHERE idbancos = cb;
IF codigo = '00000' THEN
SET texto = CONCAT(cb,' - ',nomban);
CALL log_int_add(id, 'Mantenimiento de Bancos', 'B', NULL, texto);
ELSE
IF (mensaje IS NOT NULL) THEN
SET texto = CONCAT('Intentó Borrar:',cb,' - ',nomban,' Error:',codigo,'-',mensaje);
CALL log_int_add(id, 'Mantenimiento de Bancos', 'B', texto, NULL);
END IF;
END IF;
END IF;
SELECT respuesta;
END

我从 PhP 调用上述过程如下:

$getparams = filter_input_array(INPUT_GET);
$output = go($connect, "CALL bancos_remove(".$_SESSION['idusuarios'].",".$getparams['c'].")");

编辑: PhP 中的“go()”函数如下所示:

function go($connection, $statement){
$result = mysqli_query($connection, $statement);
$row = mysqli_fetch_assoc($result);
$output = $row['respuesta'];
return $output;
}

最后,在以下代码中从 jQuery 调用 PhP 脚本:

$.get("../app/probancos.php",{a:3,c:$("#txtIdBanco").val()},function(data){ ... some code ...});

现在,当使用 $.get() 方法并因此过滤 INPUT_GET 值时,一切正常。但是当调用完全相同的代码,但在 jQuery 中使用 $.post() 方法并因此使用从 INPUT_POST 过滤的值时,我得到错误:

Commands out of sync; you can't run this command now

当然,整个代码并没有被执行。因此问题是:为什么这段代码适用于 GET 但不适用于 POST?如果可能的话,我更愿意使用 POST 来避免公开传递给后端应用程序的值(如果我弄错了请告诉我)。提前感谢您的回复。

最佳答案

它与存储过程无关,因为如果您正确地捕获发送的数据并将其正确地传递给过程,它就不可能不起作用 - 此外您已经确认它可以使用 GET 方法。

正如 Jay Blanchard 所说,您必须检查数据集是如何传递的,以及它是否完全传递了。

关于php - MySQL 存储过程无法从 ajax/php 运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34139577/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com