2016-08-04 5 views
-1

2 개의 쿼리를 실행하려고하는데 다중 쿼리에 대한 온라인 가이드를 따를 때마다 쿼리 중 하나를 수행하지 않습니다.다중 쿼리에 대한 설명

첫 번째 쿼리에서 수행하려는 작업은 현재 colHistory에있는 레코드의 $ HISTORY에 사용자가 입력 한 내용을 INSERT 또는 ADD하는 것입니다. IE : colHistory에

현재 데이터 :

$의 역사에

사용자 입력 'B'는, 구문이 기록에 현재 년대 'A'에서 'B'를 추가하거나한다 'AB' . 그런 다음 두 번째 쿼리를 사용하여이 특정 행에있는 다른 모든 레코드 또는 열을 업데이트합니다.

여기 ((가) '...'불필요 더 많은 코드를 의미 있습니다) 코드이다 : 나는 colHistory를 선언 곳

$query = INSERT INTO tbInventory SET colHistory='$HISTORY' WHERE colSerno='$SERIALNUM';"; 
$query .= "UPDATE tbInventory SET 

    colImage='$IMAGE', 
    colSerno='$SERIALNUM', 

    ... 
    ... 

    colHistory='' 
    WHERE colSerno='$SERIALNUM'"; 

    mysqli_multi_query($con,$query); 

주의 '로 나는 양식에서 데이터를 삽입하기 전에. 내가이 부분에서 제대로하고 있는지 확신 할 수 없다. 제가 누락 된 것이 있습니까?

* 편집 : 이미로 하나를 사용하여 쿼리를 실행 시도

:

mysqli_query($con,"INSERT INTO tbInventory SET colHistory='$HISTORY' "); 
mysqli_query($con,"UPDATE tbInventory SET 
... 
... 

colHistory='' 
WHERE colSerno='$SERIALNUM'"; 

그러나 그 중 하나가 작동하지 않는 것, 모든 것이 무시됩니다.

은 (** 나는 이미 결과를 인쇄 할 수있는 곳 위의 코드 블록 아래 스크립트를 가지고 있고, 그것을 실행 않음) 첫 번째 쿼리가 깨진 이유를

+0

왜 mysqli_query 하나씩? 다른 선택의 여지가 없거나 약간의 이점이있을 때까지 사용하지 않아도됩니다. – SIDU

+0

위의 다중 쿼리 코드 블록을 사용하는 것처럼 코드 블록이이를 무시한 것처럼 보입니다. –

+0

아. 첫 번째 SQL은 유효하지 않습니다 : tbInventory (colHistory) 값 ('$ HISTORY')에 삽입하십시오 - MySQL 삽입 매뉴얼을 확인하십시오 – SIDU

답변

2

그럼 난 당신을 알 수 있습니다. INSERT INTO tbInventory SET colHistory = '$ HISTORY'

이 쿼리는 UPDATE 구문을 사용하지만 쿼리 프로세서에 INSERT INTO 구문이 필요하다고 말합니다. 따라서 쿼리를 실행할 수 없습니다.

기존 레코드를 업데이트해야하는지 아니면 새 레코드를 INSERT 할지를 결정하고이를 반영하도록 쿼리를 변경하십시오. (INSERT INTO를 UPDATE로 변경하거나 "colHistory = '$ History'를"Values ​​('$ History', 'col2Val'등 ...)로 변경하십시오.

두 번째 쿼리의 경우 구문은 다음과 같습니다. 당신이 보여준 것에는 괜찮지 만, 전체 쿼리를 게시하지 않았기 때문에 그곳에서 무슨 일이 일어나고 있는지 말하기 어렵습니다.이 쿼리를 더 많이 표시 할 수 있다면이 응답을 업데이트 할 수 있습니다.

삽입에 대한 좋은 질문입니다. 업데이트 대.

What are differences between INSERT and UPDATE in MySQL?

+0

그는 오류보고 작업이 없습니다 – Drew

+0

내가하려고하는 것은 현재 colHistory에있는 레코드에 $ HISTORY에 사용자가 입력 한 내용을 삽입하거나 추가하는 것입니다. 즉 : colHistory에 현재 데이터 : 달러 (A $)의 역사에 입력 'B'는, 구문이 기록에 현재, 또는 'AB'는 'A'에서 'B'를 추가해야 사용자; 두 번째 쿼리에서 UPDATE 함수를 사용하십시오. –

+0

SQL 설명서에있는'INSERT' stmts에 대한'WHERE' 절은 어디에 있습니까? 여기에 [Page] (http://dev.mysql.com/doc/refman/5.7/en/insert.html) – Drew

0

나는 멀티 쿼리 방법을 떨어 뜨리고 결국 나는 어떻게 든 cheati에 의해 내 의도 한 결과를 얻었다 않았다 ng :

현재 colHistory 셀에있는 이전 데이터 또는 데이터를 지정하고 표시했지만 텍스트 영역을 사용하지 않도록 설정했습니다. 그런 다음 이전 데이터가 들어있는 스크립트에 숨겨진 텍스트 상자를 하나 더 만든 다음 사용자보기에 숨 깁니다.

그런 다음 사용자가 수정할 수있는 새로운 텍스트 영역을 연결하여 원하는 결과를 에뮬레이션했습니다.