채택완료

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

2021-11-20 (토) 11:40:14 1,299
Copy
<?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개 / 댓글 1개

채택된 답변
+20 포인트
2021-11-20 (토) 12:23:33
  $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']}'

답변에 대한 댓글 1개

2021-11-20 (토) 13:11:11
알려주신데로 바꾸고 주소창에 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 였네요

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

정말 감사합니다.


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

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

[code]
<?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>";
}
?>

[/code]

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