【问题标题】:Calling MySQL stored procedure and Displaying its data in CAKEPHP调用 MySQL 存储过程并在 CAKEPHP 中显示其数据
【发布时间】:2016-08-02 14:31:45
【问题描述】:

我想调用我的存储过程,它只接受一个整数输入参数并在 cakephp 框架中返回多行。

存储过程:

PROCEDURE `Salary`(IN sysid int )
BEGIN
SELECT name, lastName, Salary, Month From SalaryData 
where Userid = sysid;
END

Model.PHP:

<?php
 class SalaryModel extends AppModel
 {
   public function sProcedure($testId) 
{
    $result=$this->query("CALL Salary($testId);");
    return $result;
}
 }?>

我的控制器代码是:

public function Procdata($testId) {
    $result=$this->Systemstate->sProcedure($testId);
 }

现在,谁能建议我如何在 "view.ctp" 中显示查询内容??

我希望我的模型是正确的。

提前致谢

【问题讨论】:

  • 你为什么要使用存储过程?为什么不直接使用框架生成查询?
  • 因为它是一个复杂的查询,包括最大函数等,并且在所有结果都作为存储过程中的选择查询返回之后
  • @Nomanuddin 请仅使用您正在使用的 CakePHP 的相关版本标记问题。您使用的是 CakePHP 1 还是 2?
  • 我用的是2,好的我会更新的,谢谢

标签: php cakephp cakephp-2.0 cakephp-2.1


【解决方案1】:

MySQL 存储过程通常不会返回一些结果。 您需要开发 FUNCTION 来返回一些值。 阅读更多here

【讨论】:

  • 好吧,如果我使用一个函数,有什么建议可以在 cakephp 中调用和显示内容吗?
【解决方案2】:

cakephp 中有多种调用存储过程的方法。但最好的方法是将其作为查询执行,而不是将其作为模型烘焙, 因为根据我的搜索,没有办法构建或烘焙复杂的存储过程。

所以,这样我就解决了我的问题:

我的控制器代码是:

    public function Procdata($testId) {
    $result=$this->Systemstate->sProcedure($testId);
    $this->set('data',$result);
 }

My Display Section View.CTP

   print_r($data);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-29
    • 2012-06-15
    • 2011-01-23
    • 2015-10-17
    • 2017-04-23
    • 1970-01-01
    • 2017-07-05
    • 1970-01-01
    相关资源
    最近更新 更多