2012-12-27 7 views
0

저는 ajax를 사용하여 SQL 쿼리를 수행하는 PHP 파일을 호출합니다. 사용자가 버튼을 누르면 php 파일은 select와 insert를 포함한 몇 가지 쿼리를 수행합니다. 사용자가 처음 단추를 누르면 잘 작동합니다. 두 번째 시간에는 선택 쿼리와 첫 번째 삽입 쿼리 만 작동하고 두 번째 삽입 쿼리는 아무 것도 삽입하지 않습니다. 나는 질의를 검사했다. 괜찮다. 어떤 이유로 두 번째 삽입 쿼리가 실행되지 않는 것 같습니다.두 번째 쿼리가 작동하지 않는 이유는 무엇입니까?

$itemquery = "insert into `Items` values (...)"; 
if($affected_rows = $db->exec($itemquery)){ 
    ... 
    $pickupquery = "insert into `Pickup` values (...)"; 
    if ($affected_rows2 = $db->exec($pickupquery)) { 
     echo "success"; 
    } 
    else echo "No pickup is inserted"; 
} 

처음으로 버튼을 누르면 두 쿼리가 모두 올바르게 작동합니다 ("성공"). 항목이 테이블에 삽입됩니다. 하지만 두 번째로 누르면 $ itemquery 만 작동하고 $ pickupquery는 아무 것도 삽입하지 않습니다 ("픽업 없음"이 출력 됨). $ pickupquery 자체에는 아무런 문제가 없지만 첫 번째 프레스 후에 왜 작동하지 않는지는 알 수 없습니다.

아이디어가 있으십니까?

+1

첫 번째 쿼리를 실행 한 후 (phpMyAdmin, mysql CLI 등을 사용하여) 데이터베이스를 직접 검사 했습니까? – luiges90

+1

두 번째로 MySQL 오류가 발생할 수 있습니다. –

+1

'Pickup' 테이블에 동일한 값으로 두 번째 실패한 제약 조건이있을 수 있습니다. –

답변

0

데이터베이스에서 unique 속성으로 설정 한 바보 같은 실수 였고 복제 된 값을 삽입하려고 시도하여 문제가 발생했습니다. 코드에는 아무런 문제가 없었습니다.

0

SQL 구문이 잘못되었습니다. 그것은 예를 들어

INSERT INTO `Items` (COL_NAMES) VALUES (a, b,...) 

해야

INSERT INTO `Items` (`name`, `price`) VALUES ('Beans', 0.40); 
+4

열 이름은 권장하지만 필수는 아닙니다. –

0

(잘 모르겠어요하지만이 좋든 나쁘 경우, 그러나 쉽게) 또한이 같은 SQL에 삽입 할 수 :

INSERT INTO `Items` SET name='Beans', price='0.40' 
0

Google은 이에 대한 충분한 정보가 없다고 생각합니다. 그것은 자바 스크립트 문제가 될 수 있습니다 삽입 또는 두 번째 같은 값을 같은 값을 방지하는 db의 고유 인덱스가 될 수 있습니다.

방화 광을 사용해야합니다 디버깅을 시작합니다. Firebug를 사용하면 Ajax로 호출되는 링크를 복사하고 브라우저에서 직접 액세스하려고 시도해야한다. 오류가 발생했는지 확인하기 위해 나중에 페이지를 새로 고치십시오. 그러면 Ajax로 버튼을 두 번 누르면 시뮬레이션해야합니다.

difebug를 통해 ajax 호출이 올바른 페이지를 호출하고 호출하는 횟수가 2 회 (버튼을 누를 때마다 1 회)라는 것을 확인하십시오.

그런 다음 해당 호스트에 대해 정의 된 오류 파일에 오류가 있는지 확인하십시오.

관련 문제