programing

PHP에서 MySQL 테이블의 마지막 삽입 ID를 얻으려면 어떻게 해야 하나요?

sourcejob 2022. 9. 24. 10:21
반응형

PHP에서 MySQL 테이블의 마지막 삽입 ID를 얻으려면 어떻게 해야 하나요?

새로운 데이터가 자주 삽입되는 테이블이 있습니다.테이블의 마지막 신분증을 가져와야 합니다.이거 어떻게 해?

to 요?SELECT MAX(id) FROM table

PDO 를 사용하고 있는 경우는, 을 사용해 주세요.

Mysqli 를 사용하고 있는 경우는, 을 사용해 주세요.

아직 Mysql을 사용하고 있는 경우:

새로운 코드의 함수는 사용하지 말아 주세요.그것들은 더 이상 유지되지 않고 공식적으로 폐지된다.빨간 상자 보이지?대신 준비된 문장에 대해 알아보고 PDO 또는 MySQLi사용하십시오. 이 문서는 어떤 문장이 어떤 것인지 결정하는 데 도움이 됩니다.PDO를 선택한 경우 다음 튜토리얼을 참고하십시오.

단, 필요한 경우 를 사용하십시오.

현재 접속에 삽입된 마지막 ID를 알 수 있는 기능이 있습니다.

mysql_query('INSERT INTO FOO(a) VALUES(\'b\')');
$id = mysql_insert_id();

또한 max를 사용하는 것은 좋지 않습니다.두 개의 다른 세션에서 동시에 코드를 사용하면 문제가 발생할 수 있기 때문입니다.

이 함수는 mysql_insert_id라고 불립니다.

PDO의 경우:

$pdo->lastInsertId();

Mysqli의 경우:

$mysqli->insert_id;

새로운 코드의 함수는 사용하지 말아 주세요.그것들은 더 이상 유지되지 않고 공식적으로 폐지된다.빨간 상자 보이지?대신 준비된 문장에 대해 알아보고 PDO 또는 MySQLi사용하십시오. 이 문서는 어떤 문장이 어떤 것인지 결정하는 데 도움이 됩니다.PDO를 선택한 경우 다음 튜토리얼을 참고하십시오.

괜찮아요.LAST_INSERT_ID()도 사용할 수 있습니다.

이 쓴 좋은 을 줄 입니다.id그것들이 고유하고 자동으로 증가한다고 가정할 때, 동시성 문제를 불러도 괜찮다고 가정할 수 있습니다.
MySQL을 데이터베이스로 사용하고 있기 때문에 삽입한 현재 연결에서만 작동하는 특정 기능이 있습니다.
PHP는 이 기능을 위한 특별한 기능을 제공합니다.

정상적으로 동작하도록 시험해 주세요.

$link = mysqli_connect("localhost", "my_user", "my_password", "world");

$query = "INSERT blah blah blah...";
$result = mysqli_query($link, $query);

echo mysqli_insert_id($link);

깔끔하고 심플 -

$selectquery="SELECT id FROM tableName ORDER BY id DESC LIMIT 1";
$result = $mysqli->query($selectquery);
$row = $result->fetch_assoc();
echo $row['id'];

한 후 ID라는1개의 합니다.insert_id()으로 삽입된 ID가됩니다.

예:

$this->db->insert('mytable',$data);
echo $this->db->insert_id(); //returns last inserted id

일렬로

echo $this->db->insert('mytable',$data)->insert_id();

좋다mysql_insert_id()쿼리를 후즉, 같은 를 의미합니다.INSERT는 INSERT를 사용합니다.이는 같은 스크립트세션에서 호출하는 것을 의미합니다.그렇지 않으면 제대로 작동하지 않을 거예요.

함수 "ID" "php" 에서 수 .mysql_insert_id();

$id = mysql_insert_id();

또한 최신 ID를 얻을 수 있습니다.

$id = last_insert_id();

예를 들어 어떤 답도 보이지 않는 것은 슬픈 일이다.

Mysqli 사용::$insert_id:

$sql="INSERT INTO table (col1, col2, col3) VALUES (val1, val2, val3)";
$mysqli->query($sql);
$last_inserted_id=$mysqli->insert_id; // returns last ID

PDO 사용:: lastInsertId:

$sql="INSERT INTO table (col1, col2, col3) VALUES (val1, val2, val3)";
$database->query($sql);
$last_inserted_id=$database->lastInsertId(); // returns last ID

메모: mysqli::insert_id를 1개의 문으로 여러 번 삽입하면 올바르지 않습니다.

표:

create table xyz (id int(11) auto_increment, name varchar(255), primary key(id));

그러면 다음과 같이 됩니다.

insert into xyz (name) values('one'),('two'),('three');

mysqli::insert_id는 3이 아닌 1이 됩니다.

올바른 값을 얻으려면 다음을 수행합니다.

mysqli::insert_id + mysqli::affected_rows) - 1

이것은 문서화된 적이 있지만 좀 애매하다.

원하는 테이블의 마지막 auto_increment id를 얻으려면 순수 MySQL 구문을 사용하는 것이 좋습니다.

php mysql_insert_id() 및 mysql last_insert_id()는 마지막 트랜잭션 ID만 제공합니다.

스키마 내 테이블의 마지막 auto_incremented ID(마지막 트랜잭션 ID뿐만 아니라)를 원하는 경우 이 쿼리를 사용할 수 있습니다.

SELECT AUTO_INCREMENT FROM information_schema.TABLES
    WHERE TABLE_SCHEMA = 'my_database' 
    AND TABLE_NAME = 'my_table_name';

바로 그겁니다.

사용.MySQLi가끔 얻을 수 없었던 거래mysqli::$insert_id0이 반환되었기 때문입니다.특히 스토어드 프로시저를 사용한다면INSERTs. 트랜잭션에는 다른 방법이 있습니다.

<?php

function getInsertId(mysqli &$instance, $enforceQuery = false){
    if(!$enforceQuery)return $instance->insert_id;

    $result = $instance->query('SELECT LAST_INSERT_ID();');

    if($instance->errno)return false;

    list($buffer) = $result->fetch_row();

    $result->free();

    unset($result);

    return $buffer;
}

?>

mysql이 디벨리케이션 상태일 때 mysqli 사용

<?php
$mysqli = new mysqli("localhost", "yourUsername", "yourPassword", "yourDB");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}
// Conside employee table with id,name,designation
$query = "INSERT INTO myCity VALUES (NULL, 'Ram', 'Developer')";
$mysqli->query($query);

printf ("New Record has id %d.\n", $mysqli->insert_id);

/* close connection */
$mysqli->close();
?>

나는 노력했다.

mysqli_insert_id($dbConnectionObj)

이렇게 하면 현재 연결의 마지막으로 삽입된 ID가 반환되므로 연결을 올바르게 관리하고 있으면 이 ID가 작동합니다.적어도 나한테는 효과가 있었어.

언급URL : https://stackoverflow.com/questions/1685860/how-do-i-get-the-last-inserted-id-of-a-mysql-table-in-php

반응형