PHP OOP - 从两个函数返回 lastInsertId

Posted

技术标签:

【中文标题】PHP OOP - 从两个函数返回 lastInsertId【英文标题】:PHP OOP - Returning lastInsertId from two functions 【发布时间】:2015-06-28 08:10:07 【问题描述】:

我是 OOP 新手,对返回具有相同变量名的函数有疑问,例如:

class CompanyManager

   function createCompany()
   
       // PDO - create the company
       return $db->lastInsertId();
   

   function createCompanyContact()
   
       // PDO - create the contact
       return $db->lastInsertId();
   

问题是我首先调用 createCompany,获取它的 ID 并在我创建联系人时使用它。但是,在 createCompanyContact 中,如果查询因任何原因失败,它会返回 companyID,因为它是先前在 createCompany 中从数据库返回的值,因此仍处于设置状态。我该如何解决这个问题?

我曾考虑为联系人创建一个单独的类,但如果在一个类中我们只能使用一次 lastInsertID 肯定会有点限制(因为该值会渗透到其中的任何其他函数)?

【问题讨论】:

【参考方案1】:

既然你已经知道问题所在,为什么不直接在你的第二个函数上设置一个条件,如果查询确实插入了一行,则只返回lastInsertId()。例如

 function createCompanyContact()
   
       // execute the statement here
       if($sth->rowCount()>0)
         return $db->lastInsertId();
       else
         return NULL;
   

【讨论】:

以上是关于PHP OOP - 从两个函数返回 lastInsertId的主要内容,如果未能解决你的问题,请参考以下文章

将函数的结果分配给 PHP 类中的变量? OOP 怪异

计算 OOP PHP 中返回的行数

PHP.OOP

php面向对象(OOP)编程

PHP中的面向对象OOP中的魔术方法

PHP中的面向对象OOP中的魔术方法