【问题标题】:MySQL Stored procedure with multiple SELECT FROM statements from the same table具有来自同一个表的多个 SELECT FROM 语句的 MySQL 存储过程
【发布时间】:2020-05-06 12:27:01
【问题描述】:

我有一个名为“thumb”的表格,其中包含图像的相对路径以及与图像相关的其他数据,例如它们的标题和描述。我正在处理的网站的每个页面都代表不同类别的图像。现在,我为每个页面(类别)设置了单独的存储过程,以根据它们的 ID 选择不同的图像。是否可以为每个页面(类别)设置一个存储过程来选择不同的图像,还是我需要为每个图像范围创建单独的存储过程?

现在是这样的: “所有作品”页面的流程:

BEGIN
SELECT * FROM thumb ORDER BY id ASC;
END

“绘画”的程序:

BEGIN
SELECT * FROM thumb WHERE id BETWEEN 12 AND 15 ORDER BY id ASC;
END

“图纸”的程序:

BEGIN
SELECT * FROM thumb WHERE id BETWEEN 16 AND 19 ORDER BY id ASC;
END

等等

存储过程能否监听调用的来源以及通过 if 语句决定应用哪个 SELECT * FROM 语句?

【问题讨论】:

  • 存储过程能否监听调用的来源 过程根本无法“监听”。但是你可以从不同的地方用不同的参数调用它,并根据参数值查询选择。

标签: php mysql stored-procedures


【解决方案1】:

你需要类似的东西

CREATE PROCEDURE get_images (IN pagetype TEXT)
SELECT * 
FROM thumb 
WHERE CASE pagetype WHEN 'Paintings' THEN id BETWEEN 12 AND 15
                    WHEN 'Drawings'  THEN id BETWEEN 16 AND 19 
                                     ELSE TRUE
                                     END
ORDER BY id ASC;

【讨论】:

  • 非常感谢,在 PHP MyAdmin 中运行良好。我只是不知道如何在我的 PHP 代码中调用这个过程来显示图像。我试过$pagetype = 'Paintings'; $result = $dbc->query('CALL get_images("$pagetype")');,但它在所有页面上都给出了相同的结果。如何调用参数?
  • $result = $dbc->query("CALL get_images('$pagetype')");
  • 引用! :D 再次非常感谢! большое спасибо!
猜你喜欢
  • 2013-12-17
  • 1970-01-01
  • 1970-01-01
  • 2021-10-04
  • 2013-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多