IT_Programming/PHP

가변적인 MYSQL 입력 자동화하기

JJun ™ 2007. 9. 30. 11:47

제가 초보다 보니 필도 좀만 바꾸면 에러나고 일일이 찾아다니면서
고치긴 그렇고 해서 그냥 한번 만들어 본 합수입니다.

<?

function _dbinput_($dbname, $tablename="", $type=""){
  //------------------------------------------------------------------------
  // 어쩌다 만든 함수
  //------------------------------------------------------------------------
  global $mysql, $text;
 
  $pResult = mysql_db_query( $dbname, "SHOW fields FROM $tablename" );
  $num = mysql_num_rows( $pResult );
  $type = strtolower($type);

  if($type == 'update'){
    $SETCODE = "update $tablename SET ";
  }elseif($type == 'insert'){
    $SETCODE = "insert into $tablename(";
  }

  $ii = 0;
  for( $i = 0; $i < $num; $i++ ) {
    $field = $this -> fetch_array($pResult);

    if($type == 'update'){
      if($_POST[$field["Field"]]){
        $SETCODE .= "`".$field["Field"]."`" . " = '" . $_POST[$field["Field"]] . "'";
        $ii++;
        if(($ii) != sizeof($_POST)) {
          $SETCODE .= ", ";
        }else{
          $SETCODE .= "";
        }
      }

    }elseif($type == 'insert'){
      $SETCODE .= "`".$field["Field"]."`";
     
      if($field["Extra"] == "auto_increment"){
        $Set_value .= "''";
      }else{
        if(eregi("pass", $field["Field"])){
          $Set_value .= "password('" . $_POST[$field["Field"]] . "')";
        }else{
          $Set_value .= "'" . $_POST[$field["Field"]] . "'";
          //$Set_value .= "'\$_POST[$field[Field]]'";
        }
        //$Set_value .= "'" . $_POST[$field["Field"]] . "'";
      }
     
      if(($i+1) != $num) {
        $SETCODE .= ", ";
        $Set_value .= ", ";
      }else{
        $SETCODE .= ")";
        $Set_value .= "";
      }
    }
  }
  if($type == 'update'){
    $SETCODE .= " WHERE ";
  }elseif($type == 'insert'){
    $SETCODE .= "\n VALUES ($Set_value)";
  }
  return $SETCODE;
}

/*-----------------------------------------------------------------------------
/ 사용법 사용법은 그냥 간단하게 $_POST 문으로 넘겨 받은 값을
/ 지정한 디비의 필드와 같은 것이 있으면 자동 Insert 문을 만든다.
/ 간혹 pass(*) 와 같이 사용하면 필드명이 pass 라는 것이 있으면
/ 자동으로 password('') 화 해준다.
/ 그외 자동화는 실력이 없어 요기 까지 만들어 쓰고 있습니다.
------------------------------------------------------------------------------*/
$INSERT =  _dbinput_($mysql['dbname'], 'n_member', "INSERT");
mysql_query($INSERT);
$insert_id = mysql_insert_id();

?>

 

 

출처 : http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=44772&sca=&sfl=wr_subject%7C%7Cwr_content&stx=mysql&sop=and