【问题标题】:Not able to display data of stored procedure无法显示存储过程的数据
【发布时间】:2020-03-24 08:47:00
【问题描述】:

我是 PHP 新手。我创建了存储过程,它在不同的选项卡中显示结果,如下所示。 我只能打印“结果 1”数据,但无法打印其他选项卡数据。当我尝试打印“pid”时,我得到了 null。

index.php

$query=mysqli_query($conn,"call vaamoz_admin.spGetOutletBusinessDetails(101)");

while($row=mysqli_fetch_assoc($query))
{
    $data[]=array("oid"=>$row['oid'],"bn"=>$row['bn'],"bd"=>$row['bd'],"pid"=>$row['pid']); //line 61
}

错误

Undefined index: pid in C:\nginx\www\repos\Sportaz-repo\php\getVendorById.php on line 61

结果

[{"oid":"101","bn":"Happy Junctions","bd":"Restaurant ","pid":null}]

spGetOutletBusinessDetails

    CREATE PROCEDURE `spGetOutletBusinessDetails`(IN $p_nOutletId INT)
BEGIN


     SELECT  bc.nBusinessDetailsId AS 'oid',
            bc.strBusinessName AS bn,
            bc.strBusinessDescription AS bd,
            o.strOutletUri AS ocp,
            bc.strCreatedOn AS t,
            bc.strUpdatedOn AS uo,
            bc.nItemStatus AS s,
            bc.nItemState AS ist,
            bc.nRequestType AS rt,
            $v_Rating AS r,
            $v_Followers as fc


    FROM tblBusinessDetails bc
    inner join tbloutletcoverimage o on bc.nBusinessDetailsId = o.nBusinessDetailsId
    WHERE bc.nBusinessDetailsId = $p_nOutletId AND bActive = 1;

    SELECT nPackageId AS pid

    FROM tblPackageAssociatedOutlets

    WHERE nOutletId = $p_nOutletId;


    SELECT  t1.nBusinessDetailsId AS 'bid',
            t1.strBusinessName AS 'strn', 
            t3.strLatitude AS 'blat',
            t3.strLongitude AS 'blng',
            t3.strAddressLineThree AS 'badd'
    FROM tblBusinessDetails t1
    INNER JOIN tblVendorBusinessCategory t2 on t1.nBusinessDetailsId = t2.nBusinessDetailsId
    INNER JOIN tblOutletAddresses t3 on t1.nBusinessDetailsId = t3.nBusinessDetailsId
    WHERE   t2.nMainCategoryId=(SELECT nMainCategoryId FROM tblVendorBusinessCategory WHERE nBusinessDetailsId = $p_nOutletId) AND 
            t3.strPincode=(SELECT strPincode FROM tblOutletAddresses WHERE nBusinessDetailsId = $p_nOutletId)
    ORDER BY t1.strBusinessName ASC;
END

【问题讨论】:

  • 能否看一下存储过程代码
  • @ADyson 没问题
  • 等待它给出错误“看起来您的帖子主要是代码;请添加更多详细信息。”所以我正在减少它
  • @ADyson 添加了它。请检查
  • 是的,正如下面的答案所说 - 您有多个不同的结果集,因此您必须分别收集每个结果集。

标签: php mysql


【解决方案1】:

看起来您的过程返回了多个结果集。因此,您的 PHP 代码还应该处理所有传入的结果集。您收到错误的原因是 pid 似乎在第二个结果集中,而您正试图访问它,就像它在第一个结果集中一样(mysqli_query 只处理第一个结果集)。

看看mysqli的multi_query

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-05
    • 2013-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多