我正在使用MySQLi预处理语句来执行此操作,因为数据来自其他来源。 这是我的代码,它不起作用。我不明白为什么我需要做$ stmt-> store_result()才能运行num_rows()..因为如果我没有运行store_result,我会收到一个错误:
致命错误:在非对象
上调用成员函数bind_param()
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();
}
}
基本上我希望代码检查公司表中是否已存在,然后检查后,如果公司存在,那么我需要记录公司的ID,以便我可以在其他查询中使用它,但是如果它不存在,那么我需要记录公司名称然后获取id,以便我可以在我的其他查询中使用它。
请帮帮我。
答案 0 :(得分:1)
要获得$companyId
,您需要$stmt->bind_result()
和$stmt->fetch()
。 Docs on fetch()
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...
}