PHP如何获取数据库最后一条数据的ID并转为int类型存入变量
PHP获取数据表最后一条ID并转int的实现方法
现有代码问题说明
mysqli_query()执行成功后返回的是MySQL结果集对象,不是直接的查询字段值,直接对它做类型强转或者自增操作无法拿到正确的ID值;同时你调用mysqli_query()时没有传入必填的数据库连接对象作为第一个参数,代码本身也会执行报错。
正确实现代码
提前准备好有效的mysqli数据库连接对象,这里假设连接对象为$conn:
// 仅查询需要的post_id字段,比查询全表字段效率更高 $sql = "SELECT post_id FROM posts ORDER BY post_id DESC LIMIT 1"; $result = mysqli_query($conn, $sql); // 提取结果集中的行数据 $row = mysqli_fetch_assoc($result); // 转int类型赋值给变量 $lastID = (int)$row['post_id']; // 后续可正常执行自增等操作 $lastID++;
边界情况兼容
如果表可能存在空数据的情况,建议加非空判断避免报错:
$sql = "SELECT post_id FROM posts ORDER BY post_id DESC LIMIT 1"; $result = mysqli_query($conn, $sql); if(mysqli_num_rows($result) > 0){ $row = mysqli_fetch_assoc($result); $lastID = (int)$row['post_id']; }else{ // 空表时可设置默认起始ID $lastID = 1; }
额外优化提示
如果你是要获取刚通过当前连接插入的数据的自增ID,不需要额外查表,直接调用mysqli_insert_id($conn)就能直接拿到int类型的最新插入ID,性能更高。
内容的提问来源于stack exchange,提问作者mrdenizlp
相关产品推荐
相关产品推荐

