我正在为基于 Web 的应用程序编写一些 MySQL 程序,令我印象深刻的是根本没有参数的类型检查。
例如,如果我有以下内容:
CREATE PROCEDURE foo(n CHAR(4))
我可以随心所欲地调用它,它会接受它并且只取前四个字符。但如果我想做这样的事情:
use base;
DELIMITER $$
DROP PROCEDURE IF EXISTS open $$
CREATE PROCEDURE open(n INT)
BEGIN
SELECT * FROM prod_charts LIMIT n;
END $$
DELIMITER ;
它只会在使用非 int 参数调用时崩溃。而且没有反馈:当从 php 调用时,我什么也得不到,当我在 phpMyAdmin 中尝试时,我被送回主页。
所以我的问题是:我怎样才能让它更安全一点?有没有办法在这些过程中检查变量的类型?