2016-08-27 1 views
0
나는 번호로 기본 키 '아이디'가 사용자 정의 테이블에 삽입해야합니다,하지만 난 5605 행 (= 1 ID로 시작)가 예를

이 문제를 가지고

내 테이블에, 그래서 나는 현재 id = 5606을 삽입해야한다.

1/$ data [ 'id'] = 5606을 수동으로 삽입하면 올바르게 작동합니다. id가 5606 인 현재 행이 삽입됩니다.

하지만 난 그것을 자동으로 그렇게 삽입 할 수있는 권한 ID를 얻을 싶어 내가 할

2/I 데이터베이스가 5605을 가지고 검사 할 때 테이블의 행의 현재 수, 그것은 1로 항상 적은 5604 (리턴에 * 선택). 그래서 I + 2는 삽입을합니다. 내 테이블에 5606 5607 5608처럼 3 번 삽입됩니다. 여기 제발 도와주세요 것은 내 코드 주어진 숫자는, 예를 들면

$data = array(
    'name' => 'naomi', 
    'ability' => 'walk', 
); 

$wpdb->get_results("SELECT * FROM contest"); 
$numid = $wpdb->num_rows; 
$numid +=2; 
$data['id'] = $numid; 
$wpdb->insert('contest', $data); 

입니다, 내 문제는 형식입니다.

+0

를 사용하여 테이블의 행 수를 반환하려면 .html). 이런 종류의 시나리오를 수행하는 표준 방법입니다. 코드의 수를 업데이트하면 동시성 문제가 발생합니다. 자동 증가는 그것들을 모두 해결합니다. –

+0

안녕하세요, 새 행에 id를 설정하지 않으면 id = 0 인 현재 행이 1 회만 삽입되어 더 이상 작동하지 않습니다. 하지만 5605 행의 id = 1로 시작할 수 있습니다. 매우 초보자입니다. 조금만 더 제안 해주세요. – Yoona

답변

2

AUTO_INCREMENT (MySQL의 경우) 또는 SERIAL (PostgreSQL의 경우)으로 열 ID를 선언하고 기본 키 이외의 다른 모든 열을 삽입하면됩니다. 예 :

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) 
); 

INSERT INTO persons (LastName,FirstName,Address,City) VALUES (
'Sample','Person','Sample-street','Sample-city' 
); 

이상! 기본 키에 수동 삽입을 사용하지 마십시오. 실패한 쿼리를 처리하는 데 많은 문제가 발생할 수 있습니다.

두 번째 부분. 그냥 당신이 [`AUTO_INCREMENT`] (http://dev.mysql.com/doc/refman/5.7/en/example-auto-increment를 찾고 있습니다

SELECT COUNT(id) FROM persons; 
+1

mySQL의'AUTO_INCREMENT'에 수동 링크를 추가했습니다. 개념을 도입 할 때 수동 링크를 추가하는 것은 엄격하게 요구되는 것은 아니지만 좋은 연습과 (더 중요하다면) 더 많은 상향 회선을 얻는 좋은 방법입니다! –