Невозможно отобразить данные хранимой процедуры - PullRequest
1 голос
/ 24 марта 2020

Я новичок в PHP. Я создал хранимую процедуру, которая отображает результаты на разных вкладках, как показано ниже. Я могу печатать только данные «Результат 1», но не могу печатать данные других вкладок. Я получаю нулевое значение, когда пытаюсь напечатать «pid».

Result 1

Result 2

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

1 Ответ

1 голос
/ 24 марта 2020

Похоже, ваша процедура возвращает несколько наборов результатов. Поэтому ваш код PHP также должен обрабатывать все входящие наборы результатов. Причина, по которой вы получаете ошибку, заключается в том, что pid, похоже, находится во втором наборе результатов, и вы пытаетесь получить к нему доступ, как если бы он был в первом (mysqli_query обрабатывает только первый набор результатов).

Посмотрите на mysqli multi_query

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...