2016-07-21 5 views
0

내 코드에서 MySQL 테이블에 행을 삽입합니다 (존재하지 않는 경우). 쿼리에 고유 인덱스가 필요하기 때문에 그냥 을 삽입하고 있습니다. 이는 단지 정적 값 1 (줄 # 8)입니다.검색어에 동적 ID를 사용하는 방법은 무엇입니까?

public function prepare($author, $arr) { 
    $conn = new mysqli($this->servername, $this->username, $this->password, $this->db_name); 

    foreach ($arr as $value) { 

     $stmt = $conn->prepare("INSERT IGNORE INTO kh_comments(id, author,abstract) VALUES (?, ?, ?)"); 

     $id = 1; // Just a static value 

     $stmt->bind_param("dss", $id, $author, $value['id']); 
     $stmt->execute(); 

     $stmt->close(); 
     $conn->close(); 
    } 
} 

지금 1 대신 동적 값을 사용하고 싶습니다. 변수 $id은 어떤 ID가 영향을 받는지 파악할만큼 똑똑해야합니다. 또는이 작업을 수행 할 수있는 또 다른 방법이 있다면, 나는 어떤 제안을 주셔서 감사합니다!

MySQL의에서

enter image description here

+2

'db 테이블'에'자동 증가 기본 키 '를 만들고 쿼리에서 제거하면 모든 것이 잘 될 것입니다. –

+0

테이블 정의에서 ID가 자동 증가 열로 설정됩니다. –

+0

@Anant'id'는 이미' 자동 증가 '하지만 내 쿼리에서 제거하면 아무 것도 더 이상 삽입 할 수 없습니다. – Reza

답변

1

당신이 create table 또는 alter table 명령에 AUTO_INCREMENT 속성을 사용하여 auto increment 필드를 정의 할 수 있습니다 : 당신은 그냥 열 및 MySQL의 뜻에 값을 할당하지 않은 삽입하는 동안

CREATE TABLE animals (
    id MEDIUMINT NOT NULL AUTO_INCREMENT, 
    name CHAR(30) NOT NULL, 
    PRIMARY KEY (id) 
); 

자동으로 값을 할당합니다.

INSERT INTO animals (name) VALUES 
    ('dog'),('cat'),('penguin'), 
    ('lax'),('whale'),('ostrich'); 

링크 된 문서가 말하기를 :

당신은 LAST_INSERT_ID() SQL 함수 또는 mysql_insert_id() C API 함수와 가장 최근의 자동으로 생성 된 AUTO_INCREMENT 값을 검색 할 수 있습니다. 이 함수는 연결에 따라 다르므로 삽입을 수행하는 다른 연결에 의해 반환 값이 영향을받지 않습니다.

mysqli에서이 값을 검색하려면 mysqli_insert_id() function을 사용하십시오.

0

id의 값은 AUTO_INCREMENT입니다. 당신은 가치를 두지 않아도됩니다. 나는 이것이 당신의 질문이라고 생각합니다.

관련 문제