2012-09-14 5 views
4

테이블 행을 계산하고 결과에 1을 더하려고하면이 코드 스 니펫이 생깁니다.SQL 테이블 행을 계산하고 결과에 1을 더하십시오.

$countQuery = "SELECT COUNT(id) FROM donations"; 
$outcomeQuery = mysql_query($countQuery); 
$countUp = mysql_fetch_array($outcomeQuery); 
$plusOne = 1; 
$outcome = $countUp; 
echo $outcome[0] 
    or die(mysql_error()); 

그러나 이것은 나에게 오류를 제공가 :

Fatal error: Unsupported operand types

나는 이것이 내가 항상 이전 기부자 사용하지 않는 것 고유 번호가 필요합니다.

+1

동시에 두 번 실행하면 항상 고유 한 것은 아닙니다. –

+2

NB. 백작 (ID)은 최대 (ID)와 같지 않으므로 SQL 플랫폼에 다음 ID를 찾는 더 좋은 방법이있을 것입니다. – podiluska

+0

@Ic. 알아요,하지만 무작위로 생성 된 4 개의 숫자를 사용하여 100 % 중복이 없는지 확인합니다. – Laetificat

답변

3

사용 간단한 PHP이 질문은 MySQL 데이터베이스입니다

$countQuery = mysql_query("SELECT id FROM donations"); 
$count=mysql_num_rows($countQuery); 
$count+=1; 
+0

여기서 읽어 들인'$ count' 변수를 사용하는 첫 번째 읽기와 쓰기 사이에 다른 행이 삽입되면 어떻게 될까요? – Fluffeh

+0

사용자가 카운트에 1을 더하고 싶습니다. – StaticVariable

+0

완벽하게 작동했습니다. – Laetificat

6

당신은 사용할 수 있습니다 : 귀하의 요청으로

SELECT COUNT(id)+1 as IDCount FROM donations 

을 대신. 이렇게하면 PHP를 사용하여 수학을 수행 할 필요가 없습니다. 뒤쪽으로 가져온 배열은 방망이에서 바로 원하는 번호를 갖습니다.

편집 : 그러나 더 나은 대안은 자동으로 증가하는 열 유형을 사용하는 것입니다. MySQL에서는 create table 구문에서 auto_increment 구문을 사용합니다.

이를 사용하면 값을 삽입 할이 결코 실제로 하지만, 다음과 같이 오히려, 당신은 그것을 NULL을 통과 (해당 ID를 가정하면에 AUTO_INCREMENT로 필드 :

insert into tableName (ID,Name) values (null, 'Fluffeh'); 

그래서 당신이 볼 당신이 그것에게 ID 컬럼에 대한 값을 제공하지 않습니다 - 데이터베이스가 올바른 번호를 사용하여 처리한다

+0

쿼리에서 계산을 수행하는 것이 항상 더 빠르고 더 빠릅니다. – Nagri

+1

@Quasarthespacething 예, 코멘트가 올라와 편집하고있었습니다. 내가 생각하는 편집 내용은 귀하가 언급 한 코멘트를 다룹니다. – Fluffeh

+0

나는 이것을 시도하고 그것이 작동하도록 할 수 없었습니다. 웬일인지 "1"을 고수했습니다. – Laetificat

1

당신에게 고유 번호를 부여 COUNT에 의존하는 위험이 개 과정이 쿼리를 실행하면 어떻게됩니까.. , 및 두 가지 모두 시도하고 커밋합니다. 갑자기 같은 값을 두 번 사용합니다.

테이블 내용과 관계없는 일종의 시퀀스 기능을 구현하는 것이 훨씬 안전합니다.

http://forums.mysql.com/read.php?61,143867,238482#msg-238482

+0

난 무작위로 생성 된 숫자도 사용 하겠지만 중복이 없는지 확인하는 것은 쉽습니다. – Laetificat

0

:이 링크는 하나의 가능성을 보여줍니다. AUTO INCREMENT field type을 사용하시기 바랍니다. 당신이 기록 사용을 삽입 한 후 ID를 알 필요가 있다면 당신이 PHP를 사용하는 것처럼 :

mysql_query("INSERT INTO mytable (1, 2, 3, 'blah')"); 
$id = mysql_insert_id(); 

mysql_insert_id()를 참조하십시오.

4 random generated numbers to make 100% sure there are no duplicates

더 중복이없는 100 % 확실하지 않습니다 사용

. 바퀴를 다시 발명하지 마십시오. 이것은 고유 증분 식별자를 사용하는 문제가 해결 된 방법이며 항상 작동하지 않는 집에서 가져온 솔루션의 당혹감을 필요로하지 않습니다.

관련 문제