2012-01-31 3 views
0

mysql에서 값을 가져 와서 값을 전달하고 mysql에 삽입해야한다. 예를 들어PHP MYSQL : 인스턴트 셀렉트 + 삽입

:

이 스크립트는 "AAB"로 표시 될 것입니다 세계의 양면과 두 개의 고유 키에서 실행되는 위험이이 알고리즘으로
$str = mysql_fetch_assoc(mysql_query('SELECT `str_id` FROM `ids` ORDER BY `num_id` DESC LIMIT 1 ')); // = aaa 
$str = $str++; // aaa -> aab 
// than check if "aab" key already exist 
// if not , insert as key as "aab" 

..

이 고유 키에 2 번 서명하는 위험없이 어떻게 할 수 있습니까?

답변

0

MySQL-InnoDB를 사용하는 경우 해당 원인에 대해 트랜잭션 (MySQLi 및 PDO가 제공)을 사용해야합니다. MyISAM은 그것을 지원하지 않습니다. 열이 고유 있도록 데이터베이스를 설정하면 http://php.net/manual/en/pdo.transactions.php

+0

거래가 도움이되지 않습니다. 'UNIQUE' 인덱스가 필요합니다. – tadman

1

는, MySQL의 테이블이 두 번 같은 값을 추가 할 수 없습니다 : 여기

은 PDO의 트랜잭션에 대한 설명서입니다. 그런 다음 트랜잭션 결과를 확인하여 성공했는지 확인할 수 있습니다.

예를 들어 증분 된 고유 키를 원하는 것처럼 보입니다. 이것을 위해 정수를 사용해야하며, 새로운 행을 삽입 할 때 자동으로 증가 할 수 있습니다. 문자열 형식으로 원한다면 기본 수학을 수행하십시오. 즉

1 = a 
2 = b 
... 
27 = aa 
28 = ab 

테이블에 기본 키가 아직없는 것으로 가정합니다.이 경우 사용자가 해당 양식의 문자열이 필요한 이유를 알지 못합니다. 다행히도 이것이 도움이됩니다. 질문을 오해 한 경우 사과드립니다.