我正在使用PHP -actually来自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 ;
附:这不是一个制作项目,只是好玩,所以我真的不关心安全性 .
1 回答
您可以使用变量创建插入 . 没有必要创建一个魔术字符串 . 在这里,您将获得an other stackoverflow question的另一个示例: