sql_query update 디비 업데이트가 안됩니다.

sql_query update 디비 업데이트가 안됩니다.

QA

sql_query update 디비 업데이트가 안됩니다.

답변 1

본문


<?php
include '_common.php';
$sql="select mb_id, mb_password from g5_member where mb_id='pass_test1' "; 
$res= sql_query( $sql);
while( $row= sql_fetch_array( $res)) {
  $new_pass=get_encrypt_string(  $row['mb_password']);
  
  //sql_query( "update g5_member set mb_passwd='$new_pass' where mb_id={$row['mb_id']}");
  $sql = "update g5_member set mb_passwd='$new_pass' where mb_id={$row['mb_id']} ";
  sql_query( $sql);
  echo $sql."<br>";
}

 

회원 비밀번호 번경에 대한 문의에 답변을 보고 해봤는데요 ( https://sir.kr/qa/437722 )

 

db에 회원을 pass_test1 비밀번호 pass_test1 라고 만들어 놨습니다.

 

저 코드를  new_pass.php 라는 화일로 만들어서 루트에 올려놓았습니다.

그리곤  인터넷 주소창에서 http://도메인/new_pass.php   라고 한뒤 엔터치면

 

update g5_member set mb_passwd='sha256:12000:wOLeiMv1Us7gqsvNugb9shy8KQcWJas6:wRE4ucmfvXR8gf99yNILVb8jL4mGgmFJ' where mb_id=pass_test1

이런 결과값이 나옵니다. 

 

보긴엔 다 정상적인 동작을 한거같은데  mysql DB에 들어가서 확인해보면

 

3556550771_1637375899.3634.png

비밀번호가 변경되지 않았습니다.

 

제가 뭘 잘못하고 있는건지...  

( 생각해보면 누구나 주소창에서 new_pass.php를 실행할수있으니 안되는게 당연하기도 한데... )

뭐가 문제일까요.. ㅜㅜ;;

도움좀 부탁드리겠습니다.

 

이 질문에 댓글 쓰기 :

답변 1

  $sql = "update g5_member set mb_passwd='$new_pass' where mb_id={$row['mb_id']} ";
  sql_query( $sql, TRUE);  // 하시면 에러 내용을 확인하실 수 있습니다.
  echo $sql."<br>";
}

where 조건에서 따옴표가 빠졌네요.

where mb_id='{$row['mb_id']}'

알려주신데로 바꾸고 주소창에 http://도메인/new_pass.php  이렇게 입력하면


update g5_member set mb_passwd='sha256:12000:Vxcr13xWWWNDqmARnASew/TNL4kfk/L7:4GRUaCgENFCrDC3fbsMBL9lp/uNZng2i' where mb_id='pass_test1'

1054 : Unknown column 'mb_passwd' in 'field list'

error file : /new_pass.php

위에처럼 나옵니다.

에러를 보니 필드가 없다니!  해서 보니  mb_passwd  가 아니라 mb_password 였네요

바꾸고 해보니 잘됩니다!!!!

정말 감사합니다.


전 질문에선 제가 이리저리 해보다가 따옴표를 빼먹었었네요..

저 같은 분이 있을까 코드를 다시 정리해봅니다.


<?php
// 회원생성시 DB에 직접 .xls 같은 화일로 만들어 올리고 비밀번호를 암호화 하는 소스
// 그누보드5 Q/A https://sir.kr/qa/437722  ,  https://sir.kr/qa/439243

// 해당 소스를 new_pass.php 파일로 만들어 올리고 실행 (주소창에서 http://도메인/new_pass.php )

include '_common.php';

//$sql="select mb_id, mb_password from g5_member where mb_id!='admin' ";  // admin 아이디외 모든 아이디를
$sql="select mb_id, mb_password from g5_member where mb_id='pass_test1' "; // 타겟 아이디 하나만
$res= sql_query( $sql);  // 불러옴

	while( $row= sql_fetch_array( $res)) {
		$new_pass=get_encrypt_string(  $row['mb_password']);  //mb_password 필드에 있는 비밀번호를 가져와서 암호화함
		//echo "아이디 :  ".$row['mb_id']." 기존 비밀번호 : ".$row['mb_password']."암호화 한 비밀번호  : ".$new_pass."<br>"; //  화면에 보여주기
		//sql_query( "update g5_member set mb_password='$new_pass' where mb_id='$row['mb_id']'");  //아이디 하나만 변경
		$sql = "update g5_member set mb_password='$new_pass' where mb_id='{$row['mb_id']}' "; // 전체 변경
		sql_query( $sql, true);  // 에러 확인
		echo $sql."<br>";
	}
?>

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
filter #php ×
전체 15,331
© SIRSOFT
현재 페이지 제일 처음으로