gpt4 book ai didi

mysql - MariaDB 不在过程中执行插入

转载 作者:行者123 更新时间:2023-11-30 21:36:23 24 4
gpt4 key购买 nike

我正在使用 MySQL - 实际上是来自 PHPMyAdmin 的 MariaDB - 并试图在存储过程中编写插入,出于明显的(安全)原因,这是不允许的。

我尝试使用 GRANT EXECUTE ON PROCEDURE 语句更改权限。

GRANT EXECUTE ON PROCEDURE test.putDataInFull TO 'root'@'localhost' 

我真的在这里碰壁了,有什么想法吗?

编辑:

DELIMITER //
CREATE PROCEDURE putDataInFull (IN matchid INT(11))
BEGIN
DECLARE koula int(11);
DECLARE c varchar(255);
SET @koula = matchid;
SET @c := concat('insert into log (match_id, comment) values (?,\'inPUtDataWeTrtust\');');

DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
SELECT CONCAT(@c, ' is not valid');
END;
PREPARE stmt FROM @c;
EXECUTE stmt USING @koula;
DEALLOCATE PREPARE stmt;
END //
DELIMITER ;

附注这不是一个生产项目,只是为了好玩,所以我真的不关心安全性。

最佳答案

您可以使用变量创建插入。没有必要创建魔术字符串。在这里你得到另一个例子 an other stackoverflow question :

DELIMITER $$

CREATE PROCEDURE ADD_WITHDRAWAL_A(IN withdrawalcode_p VARCHAR(25), IN id_p VARCHAR(8), IN amount_p VARCHAR(12), IN datewithdrawn_p VARCHAR(35), IN approved_p VARCHAR(8))
BEGIN

START TRANSACTION;

INSERT INTO Withdrawals(WithdrawalCode, IDD, Amount, DateWithdrawn, Approved)
VALUES (withdrawalcode_p, id_p, amount_p, datewithdrawn_p, approved_p);

UPDATE account SET AccountBalance = AccountBalance - amount_p WHERE IDD = id_p LIMIT 1;

COMMIT;

END $$

DELIMITER ;

关于mysql - MariaDB 不在过程中执行插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53686512/

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