php의 update 쿼리가 왜 그럴까요?

php의 update 쿼리가 왜 그럴까요?

QA

php의 update 쿼리가 왜 그럴까요?

본문

안녕하세요..

 

지금까지 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") ;    
        }
        
}

 

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

3069040729_1643896617.5445.jpg

 

 

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

이 질문에 댓글 쓰기 :

답변 3

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

그럴리가 없을텐데요?

위 쿼리문 둘다 에러 납니다

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

아래처럼 하세요


$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' ";

 

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

mysqli_query()

이후에

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

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

답변을 작성하시기 전에 로그인 해주세요.
전체 33
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT