Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:在PHP中的一个函数中返回两个不同的查询结果_Php - Fatal编程技术网

PHP:在PHP中的一个函数中返回两个不同的查询结果

PHP:在PHP中的一个函数中返回两个不同的查询结果,php,Php,我使用了两个函数来获得两个不同的查询结果 我能用一个函数得到这两个不同的查询结果吗 谢谢你的帮助 你可以提供 public function referralDoctorData($ReferredByIdUser) { try { $referralDoctorDataQuery = $this->PDOconn->prepare(" SELECT * FROM tuserlist AS a LEFT

我使用了两个函数来获得两个不同的查询结果

我能用一个函数得到这两个不同的查询结果吗

谢谢你的帮助 你可以提供

 public function referralDoctorData($ReferredByIdUser)
{
    try
    {
        $referralDoctorDataQuery = $this->PDOconn->prepare("
            SELECT * FROM tuserlist AS a
            LEFT JOIN tdoctorprofilelist AS b
                ON a.IdUser = b.RefIdUser
            WHERE
                a.IdUser = $ReferredByIdUser
            ");
        $referralDoctorDataQuery->execute();
        $referralDoctorData = $referralDoctorDataQuery->fetch();
        return $referralDoctorData;
    }
    catch(PDOException $e)
    {
        return $e->getMessage();
    }
}

public function invoiceItemList($InvoiceId)
{
    try
    {
        $invoiceItemListQuery = $this->PDOconn->prepare(" SELECT * FROM tlabinvoiceitemdetails WHERE RefInvoiceId='".$InvoiceId."' ");
        $invoiceItemListQuery->execute();
        $invoiceItemList = $invoiceItemListQuery->fetchAll();
        return $invoiceItemList;
    }
    catch(PDOException $e)
    {
        return $e->getMessage();
    }
}

你不应该试图用一个函数做两件不同的事情。如果您有两个结果不同的查询,那么您也应该使用不同的函数,但是如果您只需要一个函数,那么您应该尝试用facade类封装您的函数

但是您也应该以正确的方式使用PDO,例如您的第一条语句

$referralDoctorDataQuery = $this->PDOconn->prepare(
'SELECT * FROM tuserlist AS a
            LEFT JOIN tdoctorprofilelist AS b
                ON a.IdUser = b.RefIdUser
            WHERE
                a.IdUser = :userId'
);
        $referralDoctorDataQuery->execute(array('userId' => $ReferredByIdUser));

当然,您可以通过一个函数获得这些结果,只需将它们作为数组返回即可

但正如viion在评论中指出的那样,你为什么想要这样? 它们似乎不相关,这使代码更具可读性 如果这两个功能保持分离

如果您仍然想要合并函数,下面是一个如何合并函数的尝试

public function getReferralDoctorDataAndInvoiceItemList($ReferredByIdUser)
{
    $returnArray = array();
    try
    {
        $referralDoctorDataQuery = $this->PDOconn->prepare("
            SELECT * FROM tuserlist AS a
            LEFT JOIN tdoctorprofilelist AS b
                ON a.IdUser = b.RefIdUser
            WHERE
                a.IdUser = $ReferredByIdUser
            ");
        $referralDoctorDataQuery->execute();
        $referralDoctorData = $referralDoctorDataQuery->fetch();
        $returnArray['referralDoctorData'] = $referralDoctorData;
    }
    catch(PDOException $e)
    {
        return $e->getMessage();
    }

    try
    {
        $invoiceItemListQuery = $this->PDOconn->prepare(" SELECT * FROM tlabinvoiceitemdetails WHERE RefInvoiceId='".$InvoiceId."' ");
        $invoiceItemListQuery->execute();
        $invoiceItemList = $invoiceItemListQuery->fetchAll();
        $returnArray['invoiceItemList'] = $invoiceItemList;
    }
    catch(PDOException $e)
    {
        return $e->getMessage();
    }

    return $returnArray;
}
在我的代码中,我没有更正您对PDO的使用(因为我从来没有这样做过) 我自己也用过PDO),但我理解PDO应该像 Jokatek在他的回答中提到


这两个函数都容易受到SQL注入的影响,因为您可能没有正确地使用PDO!但是,除非我们知道哪些列将链接这些表,否则我们只能猜测为什么要将这些列作为1函数?它们似乎不相关(发票和转诊医生?)。如果您能稍微解释一下功能以及这些表如何链接到为什么需要1个功能,请告诉我们。