테스트 사이트 - 개발 중인 베타 버전입니다

php의 update 쿼리가 왜 그럴까요? 채택완료

열혈초보 3년 전 조회 2,046

안녕하세요..

 

지금까지 php로 업데이트를 해주는 쿼리문을 만들어서 사용했는데요.. 기본적으로 업데이트를 할때

 

update 테이블명 set 필드명='값' where 조건값 이렇게 구성을 하여 사용하는 것으로 알고 있고 그렇게 사용을 했었습니다. 물론 잘 되구요.. 

 

그런데 오늘 다른 구문을 만들어 php 파일을 저장해서 사용하면 계속 에러가 나서 우연히 이것저것 하나씩 테스트를 하다가 필드명='값' 부분에서 따옴표(')를 없애고 했더니 업데이트문이 잘 작용을 하는 것입니다. 

 

물론 과거에 만들었던 파일은 따옴표 그대로 있는데 그것도 잘 되구요.. ^^;;

 

도대체 제가 뭘 놓친걸까요? 아니면 이번에 새로 만든 php문 중에서 달라진것이 있을까요? 이 php 코드도 예전거를 복사한 후 수정해서 사용했는데.. 대략적인 형태는 아래와 같습니다.

 

$checkData = $_REQUEST['checkData'];

 

$con= new mysqli($auth_host,$auth_user,$auth_pass,$auth_dbase);    

if(mysqli_connect_errno())     {                 echo("DBError") ;                  }     else     {        

         $query = "UPDATE ".$auth_dbase.".".$auth_nickname."_student_classStudyPlan  SET checklist=".$checkData." WHERE class_date='".$searchDay."' AND Plan_Index='".$planIndex."' AND name = '".$name."' AND number=".$number;     -> 이 경우 제대로 업데이트 작동하여 $res에 true 반환

 

$query = "UPDATE ".$auth_dbase.".".$auth_nickname."_student_classStudyPlan  SET checklist=".$checkData." WHERE class_date='".$searchDay."' AND Plan_Index='".$planIndex."' AND name = '".$name."' AND number=".$number;     -> 이 경우 제대로 업데이트 작동하지 않아 $res에 false 반환

 

mysqli_set_charset($con,"utf8");         $res = mysqli_query($con,$query);    

 

if(!$res)         {                     echo("Data Updated") ;                     }         else         {                             echo("Error") ;             }          }

 

디비구조의 일부는 아래와 같습니다.

 

 

도대체 왜 그런 것일까요? 이런 경우는 지금까지 한번도 없어서 도대체 무엇이 문제인지 의아합니다..^^;;

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트
3년 전

checklist 필드 타입이 varchar 인데 작은따옴표 없이도 에러 안나고 값이 잘 들어간다구요?

그럴리가 없을텐데요?

위 쿼리문 둘다 에러 납니다

그리고 쿼리문을 굳이 하나 하나 붙이는 코드로 만드니 만들기도 어렵고 어디서 잘못한건지 찾기가 어렵습니다

아래처럼 하세요

</p>

<p>$query = "UPDATE {$auth_dbase}.{$auth_nickname}_student_classStudyPlan  SET checklist='$checkData' WHERE class_date='$searchDay' AND Plan_Index= '$planIndex' AND name = '$name' AND number='$number' ";

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

열혈초보
3년 전
소중한 도움 너무나 감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

mysqli_query()

이후에

https://www.php.net/manual/en/mysqli.error.php

mysqli_error() 함수를 활용해 보세요.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

열혈초보
3년 전
넹.. 알겠습니다. 한번 시도해보겠습니다.

댓글을 작성하려면 로그인이 필요합니다.

3년 전

Plan_Index='".$planIndex."' 인트는 '' 로 안깜사주는게 정식방법이고 mysql 버전에 따라서 되거나 안되거하나 하는데 최신버전일때 안되는걸로 기억을 합니다. 반대일수도 있고요.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

열혈초보
3년 전
조언 감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인