PHP/MySQL 행을 삽입한 후 'id'를 가져옵니다.
행을 삽입하면 테이블 자동의 'id' 필드가 증가합니다.행을 삽입하고 그 ID를 취득하고 싶습니다.
말씀드린 대로 하겠습니다만, 행을 삽입하고 ID를 취득할 때까지의 시간을 신경 쓰지 않고 할 수 있는 방법은 없을까요?
입력한 정보와 일치하는 행을 데이터베이스에 조회할 수 있지만, ID만 다를 뿐 중복되는 경우가 많습니다.
$link = mysqli_connect('127.0.0.1', 'my_user', 'my_pass', 'my_db');
mysqli_query($link, "INSERT INTO mytable (1, 2, 3, 'blah')");
$id = mysqli_insert_id($link);
를 참조해 주세요.
어떤 작업을 하든 삽입하지 말고 "SELECT MAX(id) FROM mytable
"당신 말처럼 이건 인종문제이고 그럴 필요 없어요. mysqli_insert_id()
에는 이미 이 기능이 있습니다.
또 다른 방법은 두 쿼리를 한 번에 실행하여MySQL
의LAST_INSERT_ID()
두 테이블이 한 번에 수정되는 방법(PHP에는 ID가 필요 없음)입니다.
mysqli_query($link, "INSERT INTO my_user_table ...;
INSERT INTO my_other_table (`user_id`) VALUES (LAST_INSERT_ID())");
각 연결은 ID를 개별적으로 추적하므로 충돌은 이미 방지됩니다.
MySQL 함수는 이 세션에서 삽입된 ID를 가져옵니다.따라서 같은 테이블에 값을 삽입하는 다른 프로세스(예를 들어 동일한 스크립트를 호출하는 다른 사용자)가 있더라도 사용해도 안전합니다.
PHP 함수는 호출과 동일합니다.SELECT LAST_INSERT_ID()
와 함께mysql_query()
.
PHP의 웹사이트는 mysql_insert_id가 폐지되어 PDO 또는 MySQLi 중 하나를 사용해야 합니다(MySQLi에 대한 @Luke의 답변 참조).PDO를 사용하여 이를 수행하려면 다음과 같이 진행하십시오.
$db = new PDO('mysql:dbname=database;host=localhost', 'user', 'pass');
$statement = $db->prepare('INSERT INTO people(name, city) VALUES(:name, :city)');
$statement->execute([':name' => 'Bob', ':city' => 'Montreal']);
echo $db->lastInsertId();
@NaturalBornCamper가 말했듯이 mysql_insert_id는 사용되지 않으므로 사용하지 마십시오.이제 PDO 또는 mysqli 옵션을 사용할 수 있습니다.NaturalBornCamper는 답변에서 PDO에 대해 설명했으므로 mysqli_insert_id를 사용하여 MySQLi(MySQL 개량형)를 사용하여 PDO를 수행하는 방법을 보여 줍니다.
// First, connect to your database with the usual info...
$db = new mysqli($hostname, $username, $password, $databaseName);
// Let's assume we have a table called 'people' which has a column
// called 'people_id' which is the PK and is auto-incremented...
$db->query("INSERT INTO people (people_name) VALUES ('Mr. X')");
// We've now entered in a new row, which has automatically been
// given a new people_id. We can get it simply with:
$lastInsertedPeopleId = $db->insert_id;
// OR
$lastInsertedPeopleId = mysqli_insert_id($db);
자세한 예는 PHP 문서를 참조해 주세요.
나는 단지 에 관한 작은 세부사항을 추가하고 싶다.lastInsertId()
;
한 번에 여러 행을 입력하면 마지막 Id가 반환되지 않고 마지막 삽입 컬렉션의 첫 번째 Id가 반환됩니다.
다음 예를 생각해 보겠습니다.
$sql = 'INSERT INTO my_table (varNumb,userid) VALUES
(1, :userid),
(2, :userid)';
$sql->addNewNames = $db->prepare($sql);
addNewNames->execute(array(':userid' => $userid));
echo $db->lastInsertId();
여기서 무슨 일이 일어나냐면my_table
새 행 두 개테이블의 ID는 자동 증분입니다.여기에서는 같은 사용자에 대해 다른 두 행을 추가합니다.varNumb
.
와 동일합니다.행의 ID는 ID가 됩니다.varNumb=1
이는 마지막 행의 ID가 아니라 마지막 요구에 추가된 첫 번째 행의 ID를 의미합니다.
예를 들면.
$query_new = "INSERT INTO students(courseid, coursename) VALUES ('', ?)";
$query_new = $databaseConnection->prepare($query_new);
$query_new->bind_param('s', $_POST['coursename']);
$query_new->execute();
$course_id = $query_new->insert_id;
$query_new->close();
라인 " " "$course_id = $query_new->insert_id;
아이디이게 도움이 됐으면 좋겠다.
이렇게 시도하면 답을 얻을 수답을 얻을 수 있습니다.
<?php
$con=mysqli_connect("localhost","root","","new");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
mysqli_query($con,"INSERT INTO new values('nameuser','2015-09-12')");
// Print auto-generated id
echo "New record has id: " . mysqli_insert_id($con);
mysqli_close($con);
?>
다음 링크를 참조하십시오.
http://www.w3schools.com/php/func_mysqli_insert_id.asp
http://php.net/manual/en/function.mysql-insert-id.php
또한 이 확장자는 PHP 5.5에서 사용되지 않고 PHP 7.0에서 제거되었습니다.
위의 링크 http://php.net/manual/en/function.mysql-insert-id.php에서 답을 찾았습니다.
답은 다음과 같습니다.
mysql_query("INSERT INTO tablename (columnname) values ('$value')");
echo $Id=mysql_insert_id();
이거 드셔보세요.효과가 있었어!
$sql = "INSERT INTO tablename (row_name) VALUES('$row_value')";
if (mysqli_query($conn, $sql)) {
$last_id = mysqli_insert_id($conn);
$msg1 = "New record created successfully. Last inserted ID is: " . $last_id;
} else {
$msg_error = "Error: " . $sql . "<br>" . mysqli_error($conn);
}
다른 가능한 답변은 다음과 같습니다.
테이블을 정의할 때 테이블에는 열과 데이터가 포함됩니다.열 ID에는 AUTO_INCREMENT 속성을 지정할 수 있습니다.
이 방법으로 아이디를 걱정할 필요 없이 자동으로 생성됩니다.
예를 들어 (w3schools에서 가져온)
CREATE TABLE Persons
(
ID int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (ID)
)
이것이 누군가에게 도움이 되기를 바랍니다.
편집: 자동 ID를 생성하는 방법을 정의하는 부분일 뿐이며, 작성한 후 자동 ID를 얻으려면 앞의 답변이 옳습니다.
언급URL : https://stackoverflow.com/questions/897356/php-mysql-insert-row-then-get-id
'source' 카테고리의 다른 글
Laravel 데이터베이스에서 모델을 새로고침/새로 고치는 방법 (0) | 2023.01.15 |
---|---|
SQLite - RAND()로 주문 (0) | 2023.01.15 |
마우스 위치 가져오기 (0) | 2023.01.12 |
Level이 되는가?FINE 로깅 메시지가 표시되지 않습니까? (0) | 2023.01.12 |
Panda DataFrame에 헤더 행을 추가하는 방법 (0) | 2023.01.12 |