php - MySQL 存储过程 - 使用 PHP 解析

标签 php html mysql

我有一个使用 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/

相关文章:

php - PHP SSH2 ssh2_connect

php - 使用 PHP ("a-z"、 "0-9"和 "-"验证文件名)

php - 使用 PHP 将 XML 转换为 CSV,但有一些变化

html - 文本是否应该为可访问性设置焦点?我特别在考虑键值对

php - 从两个数据库表中的下拉列表中选择一个值

MySql 函数没有返回正确的结果

php - 用户个人资料图像和内容之间的空间。 Bootstrap

javascript - 固定位置的 Div 仍然滚动?

javascript - 使用 ajax 和 jQuery 自动填写表单,但有时只能工作

Mysql:在我的本地计算机上观察到插入和更新都非常慢