2015-01-22 3 views
0

여기에 오류 데이터베이스 쿼리가 실패했습니다. SQL 구문에 오류가 있습니다. ..이 오류 고정 내가 무엇을해야하는지 잘 모릅니다에데이터베이스 쿼리가 실패했습니다. SQL 구문에 오류가 있습니다.

메신저 너무 피곤 라인 4에 ')'근처에 사용할 수있는 권리 구문에 대한 MySQL 서버 버전에 해당하는 설명서를 .. 확인

<form id="packageLessonType" method="post"> 
<table id="listpackage" class="table table-condensed table-hover"> 
<thead> 
<tbody id="responsePackage"> 
<tr id="pack_1"> 
<td>1 Month Unlimited</td> 
<td id="td-" class="center"> 
<input type="checkbox" value="1" name="package[]"> 
</td> 
</tr> 
<tr id="pack_2"> 
<td>6 Lessons</td> 
<td id="td-" class="center"> 
<input type="checkbox" value="2" name="package[]"> 
</td> 
</tr> 
<tr id="pack_3"> 
<td>6 Months Unlimited</td> 
<td id="td-" class="center"> 
<input type="checkbox" value="3" name="package[]"> 
</td> 
</tr> 
<tr id="pack_4"> 
<td>12 Months Unlimited</td> 
<td id="td-" class="center"> 
<input type="checkbox" value="4" name="package[]"> 
</td> 
</tr> 
<tr id="pack_5"> 
<td>Group of 4</td> 
<td id="td-" class="center"> 
<input type="checkbox" value="5" name="package[]"> 
</td> 
</tr> 
<tr id="pack_6"> 
<td>Group of 8 </td> 
<td id="td-" class="center"> 
<input type="checkbox" value="6" name="package[]"> 
</td> 
</tr> 
</tbody> 
</table> 
</form> 

아약스 스크립트

$('.packAddLt_btn').click(function(e){ 
     var clickedIdadded = this.id.split('_'); 
     var addedId = clickedIdadded[1]; 
     var addedPackageLesson = "&lessonPackageAdded="+addedId; 
     var addLesPackCheck = $('#packageLessonType').serialize(); 
     var submitData = addLesPackCheck+addedPackageLesson; 
     //alert(submitData); 

     $.ajax({ 
      type:"POST", 
      url:"<?php echo get_stylesheet_directory_uri(); ?>/includes/response_lessons_packages.php", 
      dataType:"text", 
      data:submitData, 
      success: function(response){ 

       alert(response); 
       }, 
      error: function(xhr, ajaxOtions, thrownError){ 
        alert(thrownError); 
       } 
      }); 

     }); 

PHP 코드

if($_POST['package']){ 

      $checkBox= $_POST['package']; 
      $idToBeAdded = $_POST['lessonPackageAdded']; 

      foreach($checkBox as $value){ 
       $queryAdd = "INSERT INTO packagebylessontype (packageid)VALUE({$value}) WHERE lessontypeid = {$idToBeAdded}"; 
       $addedLessonByPackage = mysql_query($queryAdd, $connection); 
       } 
       confirm_query($addedLessonByPackage); 

      if($addedLessonByPackage){ 
       echo "You've successfuly deleted your Package.."; 
       mysql_close($connection); 
       }else{ 
       header('HTTP/1.1 500 Looks like mysql error, could not insert record!'); 
       exit(); 

       } 

    } 

오류 :

데이터베이스 쿼리가 실패했습니다. SQL 구문에 오류가 있습니다. 올바른 구문을 보려면 MySQL 서버 버전에 해당하는 매뉴얼을 확인하십시오. 4 행에서 ')'를 사용하십시오.

+0

사이드 노트 : 'id'는 중복 될 수 없습니다. – Raptor

+1

그것의'values', 삽입시'where' 절을 갖는 것이 의미가 없습니다. – Ghost

답변

2

VALUE 유형 VALUE 대신 구문 오류가 있습니다.

또한 SQL 매개 변수를 올바르게 이스케이프 처리하지 못하므로 SQL 주입이 가능합니다.

+0

아, 미안 해요. 나는 모바일에서 올리므로 어디서나 다른 쿼리를 볼 수 없었습니다. 사실입니다. INSERT에서 조건을 사용할 수 없습니다. 당신이 원하는 것은 또한 lessontypeid를 삽입하는 것입니다 (실제로 삽입하고자하는 경우). 또는 위의 "manuelbcd"와 같은 UPDATE 쿼리를 사용하십시오. –

+0

삽입을 원할 경우 다음과 같습니다. INSERT INTO packagebylessontype (packageid, lessontypeid) VALUES ({$ value}, {$ idToByAdded}); –

0

(packageid) 사이의 공간을 제공하고 VALUES, 나는이 작동하지 않을 수 있습니다 생각하고 당연히 그것은 VALUES이

+0

작동하지 않습니다. :( –

0

는 "packagebylessontype (packageid) INTO INSERT = 대신 VALUE $ queryAdd의 값으로 시도 값이 아닙니다 해야한다 가치 ({$ value}) 어디 lessontypeid = {$ idToBeAdded} ";

2

간단한 쿼리에서 WHERE 절과 함께 INSERT 문을 사용할 수 없습니다. INSERT는 자신의 필드 lessontypeid를 가진 새로운 행을 생성합니다. 어쩌면 당신은 업데이트를하려고합니다. 당신은 삽입을 확인하려면

, 올바른 방법은 다음과 같습니다

INSERT INTO packagebylessontype (packageid) VALUES ('A') 

이 업데이트를 수행 할 경우 :

UPDATE packagebylessontype SET packageid = 'A' WHERE lessontypeid ='1' 

내가 WHERE 사용하고 있습니다 UPDATE 조작에서만, 갱신 될 위치 지정 레지스터에 대한 참조로 사용됩니다.

관련 문제