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个功能,请告诉我们。