메뉴 건너뛰기

Dev tips

PHP PHP 에서 MySQL 바인딩 구현

taknim 2009.09.12 03:27 조회 수 : 9141 추천:2192

누군가가 말해준 MySQL 바인딩

/* 바인드 */
protected function bind($key) {
  $key  = substr($key[0],1);
  
  if(array_key_exists($key,$this->tmpBind)) {
   $bind = addslashes($this->tmpBind[$key]);
  } else {
   $tmp = explode(':',$this->tmpQuery);
  
   foreach($tmp as $i => $buf) {
    if(substr($tmp[$i+1],0,strlen($key)) == $key) {
     $bind = addslashes($this->tmpBind[$i]);
    }
   }
  }
  return sprintf("'%s'", $bind);
}

/* 쿼리 실행 */
public function query($sql,$bind='') {
  if(!is_resource($this->conn)) $this->conn();
  
  if(isset($bind)) {
   $this->tmpQuery = $sql;
   $this->tmpBind = $input;
  
   $sql  = preg_replace_callback('/:[a-zA-Z_]+[a-zA-Z0-9_]*/',array($this,'bind'),$sql);
  
   unset($this->tmpQuery);
   unset($this->tmpBind);
  }

  $this->stmt = mysql_query($sql,$this->conn);

  return $this->stmt;
}

/* 실행 예제 */
$sql = " select * from table where id=:a1 ";
// array('a1'=>'taknim') or array('taknim');
$sql  = preg_replace_callback('/:[a-zA-Z_]+[a-zA-Z0-9_]*/',array($this,'bind'),$sql);
번호 제목 글쓴이 날짜 조회 수
» PHP 에서 MySQL 바인딩 구현 taknim 2009.09.12 9141
332 file_get_content 사용하기 GET, POST taknim 2009.08.26 10651
331 [mysql] mysqlbinlog 실행시 캐릭터셋(utf8) 오류 taknim 2009.08.25 15765
330 커피 만드는 방법 taknim 2009.08.17 6534
329 [mysql] 동적 쿼리 생성시 변수를 대입하거나 값을 받아오기 taknim 2009.08.17 17198
328 [MSSQL] sp_who2 를 대신할 sql 코드 file taknim 2009.08.13 10941
327 [HTML] euc-kr and CP949 file taknim 2009.08.13 11679
326 [PHP] 소켓 통신할때 패킷이 길어서 받지 못 할 때 해결 방법 taknim 2009.08.08 8636
325 vsftp 계정별로 폴더 제한, 권한 옵션 설명 taknim 2009.08.01 10817
324 ssh 특정 계정 제한하기 taknim 2009.08.01 11815
323 [MSSQL] 변수를 TABLE로 선언 후 데이터 입력 taknim 2009.07.30 11704
322 WOL 관련한 사이트 (매직패킷 전송) file taknim 2009.07.22 11766
321 [ORACLE] Flashback (과거시점에서 질의실행) taknim 2009.07.06 10154
320 [Oracle] DBNEWID Utility - DBNAME,DBID변경하기 taknim 2009.07.06 15576
319 리눅스 콘솔 단축키 taknim 2009.07.06 21943
318 bash 팁1 - 단축키, 환경변수 taknim 2009.07.06 12215
317 명령 프롬프트 창이 보이지 않는 배치 파일 실행하기 taknim 2009.07.04 12854
316 [Oracle] INSERT … ON DUPLICATE KEY UPDATE taknim 2009.06.25 13864
315 알아두면 유용한 윈도우의 환경 변수들 taknim 2009.06.25 8716
314 ext3grep – ext3 복구를 쉽게 taknim 2009.06.20 8366