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") ;
}
}
디비구조의 일부는 아래와 같습니다.
도대체 왜 그런 것일까요? 이런 경우는 지금까지 한번도 없어서 도대체 무엇이 문제인지 의아합니다..^^;;
답변 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 버전에 따라서 되거나 안되거하나 하는데 최신버전일때 안되는걸로 기억을 합니다. 반대일수도 있고요.