>  기사  >  백엔드 개발  >  sqlite3 데이터베이스에 연결하기 위해 db 클래스를 캡슐화하는 PHP 방법에 대한 설명 예

sqlite3 데이터베이스에 연결하기 위해 db 클래스를 캡슐화하는 PHP 방법에 대한 설명 예

jacklove
jacklove원래의
2018-07-05 17:45:322090검색

SQLite 데이터베이스는 하나의 파일만 사용하기 때문에 매우 좋은 임베디드 데이터베이스입니다. 다음 글에서는 sqlite3에 연결하기 위해 캡슐화된 db 클래스를 사용하여 PHP에 대한 관련 정보를 주로 소개합니다. 샘플 코드를 통해 매우 상세하며 도움이 필요한 친구들이 참고할 수 있습니다.

머리말

SQLite3 확장은 PHP 5.3.0+ 이상에서 기본적으로 활성화됩니다. --without-sqlite3을 사용하여 컴파일 타임에 이를 비활성화할 수 있습니다.

Windows 사용자는 php_sqlite3.dll을 활성화하여 이 확장 기능을 사용할 수 있습니다. php_sqlite3.dll은 PHP 5.3.0 이후 PHP 배포판에 기본적으로 포함되어 있습니다.

자세한 설치 지침은 PHP 튜토리얼과 공식 웹사이트를 확인하세요.

이 글은 주로 sqlite3에 연결하기 위해 DB 클래스를 캡슐화하는 PHP 관련 내용을 소개합니다. 모두의 참고 및 연구를 위해 공유합니다. 아래에서는 자세히 설명하지 않겠습니다.

샘플 코드:

<?php
 class dbManager{
 public $db;
 function __construct(){
  if(!file_exists(&#39;./db.php&#39;)){
  $this->init();
  return;
  }
  $this->db = new SQLite3(&#39;./db.php&#39;);
 }
 function init(){
  $this->db = new SQLite3(&#39;./db.php&#39;);
  // TODO:
 }
 function changes(){
  return $this->db->changes();
 }
 function query($sql,$param=null,$memb=null){
  $stmt=$this->db->prepare($sql);
  if(!$stmt)
  return false;
  if($param){
  if(is_array($param)){
   for($i=0;$i<count($param);$i++)
   $stmt->bindValue($i+1,$param[$i]);
  }else{
   $stmt->bindValue(1,$param);
  }
  }
  $rs=$stmt->execute();
  if(!$rs){
  $stmt->close();
  return false;
  }
  $arr=$rs->fetchArray(SQLITE3_NUM);
  $rs->finalize();
  $stmt->close();
  if(!$arr)
  return null;
  if(!$memb)
  return $arr;
  $res=array();
  for($i=0;$i<count($memb);$i++){
  $res[$memb[$i]]=$arr[$i];
  }
  return $res;
 }
 function queryAll($sql,$param=null,$memb=null){
  $stmt=$this->db->prepare($sql);
  if(!$stmt)
  return false;
  if($param){
  if(is_array($param)){
   for($i=0;$i<count($param);$i++)
   $stmt->bindValue($i+1,$param[$i]);
  }else{
   $stmt->bindValue(1,$param);
  }
  }
  $rs=$stmt->execute();
  if(!$rs){
  $stmt->close();
  return false;
  }  
  $res=array();
  while($arr=$rs->fetchArray(SQLITE3_NUM)){
  if(!$memb) {
   $res[]=$arr;
   continue;
  }
  if(count($memb)==1 && $memb[0]==null){
   $res[]=$arr[0];
   continue;
  }
  $it=array();
  for($i=0;$i<count($memb);$i++){
   $it[$memb[$i]]=$arr[$i];
  }
  $res[]=$it;
  }
  $rs->finalize();
  $stmt->close();
  
  return $res;
 }
 function querySingle($sql,$param=null){
  $res=$this->query($sql,$param);
  if(!$res)
  return false;
  return $res[0];
 } 
 function querySingleAll($sql,$param=null){
  $stmt=$this->db->prepare($sql);
  if(!$stmt)
  return false;
  if($param){
  if(is_array($param)){
   for($i=0;$i<count($param);$i++)
   $stmt->bindValue($i+1,$param[$i]);
  }else{
   $stmt->bindValue(1,$param);
  }
  }
  $rs=$stmt->execute();
  if(!$rs){
  $stmt->close();
  return false;
  }  
  $res=array();
  while($arr=$rs->fetchArray(SQLITE3_NUM)){
  $res[]=$arr[0];
  }
  $rs->finalize();
  $stmt->close();
  
  return $res;
 }
 function exec($sql,$param=null){
  $stmt=$this->db->prepare($sql);
  if(!$stmt)
  return false;
  if($param){
  if(is_array($param)){
   for($i=0;$i<count($param);$i++)
   $stmt->bindValue($i+1,$param[$i]);
  }else{
   $stmt->bindValue(1,$param);
  }
  }
  $rs=$stmt->execute();
  if($rs) {
  $res=true;
  $rs->finalize();
  }else{
  $res=false;
  }
  $stmt->close();
  return $res;
 } 
 function begin(){
  return $this->exec(&#39;BEGIN&#39;);
 }
 function rollback(){
  return $this->exec(&#39;ROLLBACK&#39;);
 }
 function commit(){
  return $this->exec(&#39;COMMIT&#39;);
 } 
 function escapeString($s){
  return $this->db->escapeString($s);
 }
 //最新插入的id
 function lastInsertRowID(){
  return $this->db->lastInsertRowID();
 } 
 function lastErrorMsg (){
  return $this->db->lastErrorMsg();
 }
 }
?>

PDO가 향후 데이터베이스 이식을 지원하는 경우 동시에 PDO를 사용하면 C로 설계되어 실행 효율성이 높아집니다. . PHP의 확장 라이브러리 구성 요소로 패키지되었습니다. 빠르게 실행되고 효율적입니다.

요약

관심이 있을 만한 기사:

http 시뮬레이션 방법에 대한 분석 및 설명 요청 in PHP

php에서 소켓 푸시 기술을 구현하는 방법에 대한 설명 예시

php가 WeChat 공유 배달 주소를 가져오는 방법에 대한 설명

위 내용은 sqlite3 데이터베이스에 연결하기 위해 db 클래스를 캡슐화하는 PHP 방법에 대한 설명 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.