我的应用程序通过存储过程将每个HTTP请求的详细信息记录在多个MySQL表中,并返回唯一的请求ID给应用程序。
CALL http_req('ip', 'url', 'method', 'timestamp', @error, @request_id);
现在我还想将所有的HTTP请求头记录在一个表中,每个头都在单独的一行中:
CREATE TABLE `http_header` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`request_id` INT(10) UNSIGNED NOT NULL,
`name` VARCHAR(255) NOT NULL COLLATE 'utf8_unicode_ci',
`value` VARCHAR(255) NOT NULL COLLATE 'utf8_unicode_ci',
PRIMARY KEY (`id`))
问题在于每个客户端的标头数量和类型都不同。我还没有找到一种方法将所有标头详细信息传递给我的存储过程,然后将它们插入上述表格中。
目前,我必须在从应用程序调用存储过程后生成并执行第二个插入查询来保存标题:
INSERT INTO http_header (request_id, name, value)
VALUES (20153, 'cache-control', 'max-age=0'),
(20153, 'accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'),
(20153, 'accept-encoding', 'gzip,deflate,sdch');
能否在存储过程内保存第二个查询并插入标头?比如将所有标头作为单个字符串传递,并在存储过程内解析它?