Php 如果表中已经包含数据,我想搜索数据库,如果没有,则插入它

Php 如果表中已经包含数据,我想搜索数据库,如果没有,则插入它,php,mysqli,prepared-statement,Php,Mysqli,Prepared Statement,我使用MySQLi编写的语句来实现这一点,因为数据来自其他来源。 这是我的密码,没用。我不明白为什么我需要执行$stmt->store_result()才能运行num_rows()。。因为如果我不运行store_result,我会得到一个错误: 致命错误:对非对象调用成员函数bind_param() 基本上,我希望代码检查公司表中是否已经存在该公司,然后在检查之后,如果该公司存在,那么我需要记录该公司的id,以便在我的其他查询中使用它,但是如果它不存在,那么我需要记录公司名称,然后获取id,这样

我使用MySQLi编写的语句来实现这一点,因为数据来自其他来源。 这是我的密码,没用。我不明白为什么我需要执行
$stmt->store_result()
才能运行num_rows()。。因为如果我不运行store_result,我会得到一个错误:

致命错误:对非对象调用成员函数bind_param()


基本上,我希望代码检查公司表中是否已经存在该公司,然后在检查之后,如果该公司存在,那么我需要记录该公司的id,以便在我的其他查询中使用它,但是如果它不存在,那么我需要记录公司名称,然后获取id,这样我就可以在其他查询中使用它。

要获取您的
$companyId
您需要执行
$stmt->bind_result()
$stmt->fetch()


要获取您的
$companyId
,您需要执行
$stmt->bind_result()
$stmt->fetch()


这个怎么样:哇,太棒了,我甚至不知道它的存在。这个节目:哇,太棒了,我甚至不知道它的存在
foreach($this->contents as $key => $dealer) {
        foreach($dealer as $deals) {
               $stmt = $mysqli->prepare("SELECT id, name FROM company WHERE name = ? LIMIT 1");
               $stmt->bind_param("s", $deals['company']);
               $stmt->execute();
               $stmt->store_result();

               if($stmt->num_rows() > 0) {
                     $companyid = // I don't know how to get the id from the query
               } else {
                     $stmt->prepare("INSERT INTO company (name) VALUES (?)");
                     $stmt->bind_param("s", $deals['company']);
                     $stmt->execute();
               }
               $stmt->close();
        }
}
if($stmt->num_rows() > 0) {
  // To get your companyId
  $stmt->bind_result($companyId);
  $stmt->fetch()

  // Now $companyId has the value from id in the database
} else {
  // Do your insert statement, etc...
}