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

sql_query update 디비 업데이트가 안됩니다. 채택완료

타버린나무 3년 전 조회 1,169

</p>

<p><?php</p>

<p>include '_common.php';</p>

<p>$sql="select mb_id, mb_password from g5_member where mb_id='pass_test1' "; 

$res= sql_query( $sql);</p>

<p>while( $row= sql_fetch_array( $res)) {</p>

<p>  $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."
";</p>

<p>}</p>

<p>

 

회원 비밀번호 번경에 대한 문의에 답변을 보고 해봤는데요 ( 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에 들어가서 확인해보면

 

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

 

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

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

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

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

 

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

답변 1개

채택된 답변
+20 포인트
  $sql = "update g5_member set mb_passwd='$new_pass' where mb_id={$row['mb_id']} ";
  sql_query( $sql, TRUE);  // 하시면 에러 내용을 확인하실 수 있습니다.
  echo $sql."
";
}

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

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

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

답변에 대한 댓글 1개

타버린나무
3년 전
알려주신데로 바꾸고 주소창에 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]

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

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

로그인