gpt4 book ai didi

php - CakePHP 与存储过程

转载 作者:IT老高 更新时间:2023-10-29 00:07:45 26 4
gpt4 key购买 nike

我正在尝试在 Cakephp 中创建存储过程。我在 MYSQL 中创建了过程,并在 AppModel.php 中创建了全局函数来命中过程。 AppModel 中的函数是sProcedure。现在我有 2 个条件,我可能有变量从过程返回,或者可能有直接结果集,例如。我为分页创建了。虽然它拍摄了我的程序但没有返回任何结果。我的功能需要修改吗?

    public function sProcedure($name = NULL, $inputParameter = array(), $outputParameter = array()) {
$this->begin();
$parameter = "";
$outputParam = "";
foreach ($inputParameter as $params) {
$parameter .= $parameter == "" ? " '$params' " : ", '$params' ";
}

if (count($outputParameter) > 0) {
foreach ($outputParameter as $prm) {
$outputParam .= $outputParam == "" ? " @$prm " : ", @$prm ";
}
}
$parameter = ($outputParam) ? $parameter . ", " . $outputParam : $parameter;
$this->query("CALL `$name`($parameter);");
$result = $this->query("SELECT $outputParam");
$this->commit();
return $result;
}

$sel_data = $this->ArticleNews->sProcedure("update_blank", $input_prameter, $output);
debug($sel_data);

最佳答案

分解片段

$this->query("CALL `$name`($parameter);");

调用存储过程。让我们假设过程的主体是一个简单的 SELECT

SELECT table.* FROM table;

此过程返回一个结果集。快速浏览一下您提供的代码

 $this->query("CALL `$name`($parameter);");

,程序被调用但结果/resource未分配给 iterate 的变量结束了。

$proc_result = $this->query("CALL `$name`($parameter);");

$proc_data = array();

if (false !== $proc_result)
{
while ($proc_row = mysqli_fetch_array($proc_result))
{
$proc_data[] = $proc_row;
}
}

if (!empty($proc_data))
{
//do whatever with procedure data
}

相关文档:connector-cpp-tutorials-stored-routines-statements

关于php - CakePHP 与存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30254821/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com