我在MySQL以下存儲過程: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'].")");
Edit:
實施「走出去() 「在PhP中的功能看起來像這樣:
function go($connection, $statement){
$result = mysqli_query($connection, $statement);
$row = mysqli_fetch_assoc($result);
$output = $row['respuesta'];
return $output;
}
最後,PhP腳本從jQuery調用下面的代碼:
$.get("../app/probancos.php",{a:3,c:$("#txtIdBanco").val()},function(data){ ... some code ...});
現在,使用$獲得()方法時,因此過濾INPUT_GET值,一切正常花花公子。但是調用時非常相同的代碼,但使用jQuery中的$。員額()方法,因此使用從INPUT_POST過濾值,我得到的錯誤:
Commands out of sync; you can't run this command now
和當然,不執行整個代碼。因此,問題將是:爲什麼此代碼與GET協同工作而不是POST協議?如果可能的話,我寧願使用POST來避免將值傳遞給後端應用程序(請告訴我,如果我錯了)。預先感謝您的回覆。
您是否確認使用AJAX的POST發送數據?你確認'$ getparams'是否正確填充? –
是的,我通過在Php中打印「形成」語句來確認它,並且數據正確傳遞。 –
「形成」聲明? –