首页 > 解决方案 > 如何使用 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;
            }
        }
    }

标签: phpmysqlphpmyadmin

解决方案


代码似乎是正确的。

也许您没有ID AUTOIMCREMENT PRIMARY该表上的字段。

lastInsertId()仅当字段为 时才能返回新 ID AUTOIMCREMENT PRIMARY

也尝试查询这个以查看是否获得最后插入的 id:

$stmt = $db->query("SELECT LAST_INSERT_ID()");
$lastInsertId = $stmt->fetchColumn();

如果上述情况不是您的情况,您必须分析每一步以发现问题:

  • 运行脚本以查看它打印的内容
  • 在数据库中查看是否插入了新行及其包含的内容,尤其是id字段
  • 尝试直接在 phpmyadmin 中进行插入,然后执行 `SELECT LAST_INSERT_ID()' 以查看手动查询是否有效

推荐阅读