php - 如何使用 PHP 通过 id 在 MySQL 表中获取最新元素
问题描述
我尝试了下面的代码来获取最后插入的 id 以便将其插入另一个表,但不知何故使用$this->$conn->lastInsertId()
似乎不起作用。
有人有什么想法吗?
if (!( $stmt = $this->conn->prepare("INSERT INTO company(company_name,address_line1,address_line2,postal_code,country,contact_no,email,wifi_name,website_url,contact_person,parent_id,created_by,created_date,updated_date,deleted, wifi_name2) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"))) {
echo "Prepare failed: (" . $this->conn->errno . ")" . $this->conn->error;
} else {
if (!$stmt->bind_param('ssssssssssiissis', $name, $address_line1, $address_line2, $postal_code, $country, $phone, $email, $wifi, $url, $contact, $p_id, $staff_id, $today, $updated, $deleted, $wifi2)) {
echo "Binding parameters failed: (" . $stmt->errno . ")" . $stmt->error;
} else {
if (!$stmt->execute()) {
echo "Execute failed: (" . $stmt->errno . ")" . $stmt->error;
return FALSE;
} else {
echo $this->$conn->lastInsertId();
$stmt->close();
return TRUE;
}
}
}
解决方案
代码似乎是正确的。
也许您没有ID AUTOIMCREMENT PRIMARY
该表上的字段。
lastInsertId()
仅当字段为 时才能返回新 ID AUTOIMCREMENT PRIMARY
。
也尝试查询这个以查看是否获得最后插入的 id:
$stmt = $db->query("SELECT LAST_INSERT_ID()");
$lastInsertId = $stmt->fetchColumn();
如果上述情况不是您的情况,您必须分析每一步以发现问题:
- 运行脚本以查看它打印的内容
- 在数据库中查看是否插入了新行及其包含的内容,尤其是
id
字段 - 尝试直接在 phpmyadmin 中进行插入,然后执行 `SELECT LAST_INSERT_ID()' 以查看手动查询是否有效
推荐阅读
- r - 将一年的密度平均值和标准差绘制为 R 中的条形图
- sas - 根据公共数据字段比较不同行之间的开始/结束日期
- c++ - 在 C++ 中,最好不要对使用 RTTI 的函数参数使用按值传递?
- c - 结构是巨大的。为什么?
- angularjs - 有没有办法使用角度材料拖放来调整大小
- python - Google App Engine:禁用服务的会话中间件
- amazon-web-services - Jenkins 启动 AWS EC2 实例的工作?
- c# - C# 正则表达式在字符串匹配后查找并删除文本
- python - 在linux中打开文件时出现UnicodeDecodeError,但在Windows中打开相同的文件
- google-apps-script - 有没有办法在今天将其写入 Google 表格中的单元格时冻结它?