PHP / MySQL은 행을 삽입 한 다음 'id'를 얻습니다.
PHPPHP / MySQL은 행을 삽입 한 다음 'id'를 얻습니다.
행을 삽입하면 표의 'id'필드가 자동으로 증가합니다. 난 행을 삽입하고 그 ID를 얻고 싶습니다.
내가 말했듯이 그것을 할 것이지만 행을 삽입하고 ID를 얻는 사이에 걱정하지 않고 할 수있는 방법이 있습니까?
내가 입력 한 정보와 일치하는 행에 대해 데이터베이스를 쿼리 할 수 있다는 것을 알고 있지만, ID가 유일한 차이점과 함께 중복 될 높은 변경 사항이 있습니다.
해결법
-
==============================
1.
$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);
mysqli_insert_id ()를 참조하십시오.
무슨 일을 하든지 "SELECT MAX (ID) FROM mytable"을 삽입하고 실행하지 마십시오. 당신이 말했듯이, 그것은 경쟁 조건이며 아무 필요도 없습니다. mysqli_insert_id ()는 이미이 기능을 가지고있다.
-
==============================
2.MySQL 함수 LAST_INSERT_ID ()는 필요한 것을 수행한다. 이것은이 세션 동안 삽입 된 ID를 가져온다. 따라서 같은 테이블에 값을 삽입하는 다른 프로세스 (다른 사람이 똑같은 스크립트를 호출하는 경우 등)가 있더라도 사용하는 것이 안전합니다.
MySQL 함수 LAST_INSERT_ID ()는 필요한 것을 수행한다. 이것은이 세션 동안 삽입 된 ID를 가져온다. 따라서 같은 테이블에 값을 삽입하는 다른 프로세스 (다른 사람이 똑같은 스크립트를 호출하는 경우 등)가 있더라도 사용하는 것이 안전합니다.
PHP 함수 mysql_insert_id ()는 mysql_query ()로 SELECT LAST_INSERT_ID ()를 호출하는 것과 같습니다.
-
==============================
3.PHP 웹 사이트에서 mysql_insert_id는 더 이상 사용되지 않으며 PDO를 사용해야합니다. PDO로이를 수행하려면 다음을 수행하십시오.
PHP 웹 사이트에서 mysql_insert_id는 더 이상 사용되지 않으며 PDO를 사용해야합니다. PDO로이를 수행하려면 다음을 수행하십시오.
$db = new PDO('mysql:dbname=database;host=localhost', 'user', 'pass'); $statement = $db->prepare('INSERT INTO people(name, city) VALUES(:name, :city)'); $statement->execute( array(':name' => 'Bob', ':city' => 'Montreal') ); echo $db->lastInsertId();
-
==============================
4.@NaturalBornCamper가 말했듯이, mysql_insert_id는 현재 사용되지 않으며 사용되어서는 안됩니다. 옵션은 이제 PDO 또는 mysqli를 사용합니다. NaturalBornCamper는 PDO에 대한 해답을 설명 했으므로 mysqli_insert_id를 사용하여 MySQLi (MySQL Improved)로 수행하는 방법을 보여 드리겠습니다.
@NaturalBornCamper가 말했듯이, mysql_insert_id는 현재 사용되지 않으며 사용되어서는 안됩니다. 옵션은 이제 PDO 또는 mysqli를 사용합니다. NaturalBornCamper는 PDO에 대한 해답을 설명 했으므로 mysqli_insert_id를 사용하여 MySQLi (MySQL Improved)로 수행하는 방법을 보여 드리겠습니다.
// 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 문서를 확인하십시오 : http://php.net/manual/en/mysqli.insert-id.php
-
==============================
5.난 그냥 lastInsertId ()에 관한 작은 세부 사항을 추가하고 싶다;
난 그냥 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이 다른 두 행을 추가합니다.
마지막 에코 된 값은 varNumb = 1 인 행의 ID와 동일합니다. 이는 마지막 행의 ID가 아니라 마지막 요청에 추가 된 첫 번째 행의 ID입니다.
-
==============================
6.예제.
예제.
$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; 마지막으로 삽입 된 행의 ID가 표시됩니다. 희망이 도움이됩니다.
-
==============================
7.다음과 같이 해보십시오 :
다음과 같이 해보십시오 :
<?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에서는 제거되었다는 점에 유의하십시오.
-
==============================
8.위 링크 http://php.net/manual/en/function.mysql-insert-id.php에서 답변을 찾았습니다.
위 링크 http://php.net/manual/en/function.mysql-insert-id.php에서 답변을 찾았습니다.
정답은:
mysql_query("INSERT INTO tablename (columnname) values ('$value')"); echo $Id=mysql_insert_id();
-
==============================
9.이거 해봐 ... 날 위해 일 했어!
이거 해봐 ... 날 위해 일 했어!
$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); }
-
==============================
10.또 다른 가능한 대답은 다음과 같습니다.
또 다른 가능한 대답은 다음과 같습니다.
열과 데이터가있는 테이블을 정의하면 그 테이블이 갖게됩니다. 열 ID는 AUTO_INCREMENT 속성을 가질 수 있습니다.
이 방법으로 ID에 대해 걱정할 필요가 없으며 자동으로 만들어집니다.
예를 들어 (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를 생성하는 방법을 정의한 부분이며, 생성 된 후에 얻으려면 이전의 대답이 맞습니다.
from https://stackoverflow.com/questions/897356/php-mysql-insert-row-then-get-id by cc-by-sa and MIT license
'PHP' 카테고리의 다른 글
참고 : json_encode를 사용하여 "특수"유니 코드 문자가 이상하게 인코딩되는 이유는 무엇입니까? (0) | 2018.09.11 |
---|---|
PHP 작업을 비동기 적으로 실행하십시오. (0) | 2018.09.11 |
[재귀 적으로] PHP에서 디렉토리를 압축하는 방법? (0) | 2018.09.11 |
PHP에서 사용자를위한 CSV 파일 만들기 (0) | 2018.09.11 |
PHP를위한 최고의 IDE 란 무엇입니까? [닫은] (0) | 2018.09.11 |