我有一个使用 MySQL 的存储过程,它生成两个表。例如:
DELIMITER //
CREATE PROCEDURE MyStoredProcedure(IN input VARCHAR(4))
SELECT * FROM BLAH;
SELECT * FROM MAH;
END //
我如何在 PHP 中处理它?通常,我只处理过一张表,所以它会是这样的:
$INPUT = mysql_real_escape_string($_POST['input']);
$sql = "CALL MyStoredProcedure('{$INPUT}')";
$res = $db->query($sql);
foreach ($res as $row) {
echo "<td>{$row->Column1}</td>";
}
但是现在有两个表。那么如何通过 PHP 获取这两个表呢?
最佳答案
我可以用这个方法得到两个表:
存储过程
DELIMITER $$
DROP PROCEDURE IF EXISTS `get_procedure`$$
CREATE PROCEDURE `get_procedure`()
BEGIN
SELECT group_concat('<tr><td>',`blah_id`,'</td><td>',`blah_title`,'</td><tr>') as tbl1 ,
group_concat('<tr><td>',`mah_id`,'</td><td>',`mah_title`,'</td><td>',`mah_info`,'</td><tr>') as tbl2
FROM `blah`,`mah`;
END $$
DELIMITER ;
例如表格:
CREATE TABLE IF NOT EXISTS `blah` (
`blah_id` int(11) NOT NULL AUTO_INCREMENT,
`blah_title` varchar(300) NOT NULL,
PRIMARY KEY (`blah_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
CREATE TABLE IF NOT EXISTS `mah` (
`mah_id` int(11) NOT NULL AUTO_INCREMENT,
`mah_title` varchar(300) NOT NULL,
`mah_info` varchar(32) NOT NULL,
PRIMARY KEY (`mah_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
在选择 concat 之后,您可以使用 , rows 展开。
希望对你有帮助
关于php - MySQL 存储过程 - 使用 PHP 解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13456442/