>백엔드 개발 >PHP 튜토리얼 >PHP Mysqli 공통 코드 모음

PHP Mysqli 공통 코드 모음

迷茫
迷茫원래의
2017-02-04 16:45:322463검색

PHP 5.0부터는 초기 mysql 데이터베이스 확장 기능을 사용할 수 있을 뿐만 아니라 새롭게 확장된 mysqli 기술을 사용하여 mysql 데이터베이스와 통신할 수 있으며, 이는 객체 지향 기술인 클래스에 캡슐화되어 있습니다. PHP5 및 MYSQL4,1 이상 버전에서만 사용할 수 있습니다. (i) 입력해야 함을 나타냅니다. mysqli를 사용하면 실행 속도가 더 빠르고 편리하며 효율적이며 데이터베이스 액세스를 더 안전하게 만들 수 있습니다(클래스가 있기 때문에). 모드가 사용됩니다 )

mysqli를 사용한 간단한 프로세스

PHP.ini 구성 파일 설정
확장자=php_mysqli.dll

//연결 생성

으아악

//연결 감지

으아악

//데이터베이스 반환 값을 가져옵니다.

으아악

//연결을 닫습니다.

으아악

//공통문법
INSERT INTO [테이블 이름] ([필드 1],[필드 2]) VALUES ([값 1],[값 2]);
SELECT * FROM [테이블 이름] WHERE [식] ORDER BY [필드 1],[ASC/DESC 위/아래] [필드 2],[ASC/DESC 위/아래];
DELETE FROM [테이블 이름] WHERE [표현식];
UPDATE [테이블 이름] SET [필드 1]=[값 1],[필드 2]=[값 2] WHERE [식];
총 행 수를 가져옵니다. SELECT COUNT(*) FROM [table]

//한자가 깨져 있는 문자

으아악

다음은 몇 가지 예입니다.

mysqli에 연결

MYSQL 구성 파일 config.ini.php 생성

config.ini.php의 내용은 다음과 같습니다.

으아악

(mysqli를 사용하여 MYSQL 데이터베이스에 연결)

으아악

(기타 작업)

쿼리

으아악

세 가지 유형의 쿼리 결과 처리

으아악

연관 배열은 다음과 같은 중첩 배열입니다.

으아악

mysqli_stmt 클래스 사용

Mysql4.1 버전에서는 전체 명령을 MYSQL 서버에 한 번만 보낼 수 있는 전처리(준비된 명령문) 메커니즘을 제공하기 시작했습니다. 앞으로는 매개변수만 변경되므로 MYSQL에서는 명령을 한 번만 분석하면 되기 때문에 필요성이 크게 줄어듭니다. 데이터의 양은 명령 처리 효율성도 향상시킵니다. (주의, 연결이 필요하지 않으면 close()를 즉시 닫아야 합니다.)

단계:

1. SQL 명령 준비
$sql = "사용자(이름,비밀번호) 값(?,?)에 삽입";
$stms = $mysqli->prepare($sql);
2. 데이터 바인딩
$stms->bind_param('ss',$name,$pwd); ('ss' 참고: 다음 변수와 일치해야 합니다($name,$pwd)
을 통해 반죽형이나 플로트형
~ b 바이너리(BLOB, 바이너리 바이트 문자열)
~ )
$name = "황";
$pwd = "123456";
3. 실행
$stms->execute();
[4. 바인딩에서 다른 데이터 세트 실행
$name = "그";
$pwd = "666666";
$stms->execute();
]
5. 닫기
$stmt->close();
$mysqli->close();

(기타 유용한 매개변수)
$num = $stmt->affected_rows; 영향을 받은 행 수
$id = $stmt->insert_id; insert 명령어인 경우 삽입된 row id를 반환(자동)

事务处理

在默认情况下,MYSQL是以自动提交(autocommit)模式运行,这就意味着所执行的每一个语句都将立即写入数据库中,但如果使用事务安全的表格类型,是不希望自动提交的行为的
事务处理
当执行多条MYSQL命令时,当然希望当其中一条命令出错时,所有的命令都不执行,返回执行命令之前的状态
这就用到事务了
  
 简单运用事务流程
1.写好SQL命令
  $sql1 = "insert user(name) values('huang','123456')";
  $sql2 = "update account set number = number+1";
2.关闭MYSQL事务处理的自动提交模式
  $mysqli->cutocommit(0);
3.试执行命令 
  $success = true;
  $res1 = $mysqli->query($sql1);
  if(!$res1 or $mysqli->affected_rows !=1){
     $success = false;
  }
  $res2 = $mysqli->query($sql2);
  if(!$res2 or $mysqli->affected_rows !=1){
     $success = false;
  }
4.查看执行情况,都成功执行,有失败回滚初态
  if($success ){
     $mysqli->commit();
     echo "执行成功";
  }else{
     $mysqli->rollback();
     echo "执行失败";
  }
5.恢复MYSQL事务处理的自动提交模式
  $mysqli->cutocommit(1);
  $mysqli->close();
  
mysql 目前只有InnDB和BDB两种数据包类型才支持事务 
InnoDB最快
(创建InnDB类型表)

create table user(
id int(10) not null auto_increment,
name varchar(50) not null,
pwd varchar(50) not null,
primary key(id)
)type=InnoDB
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.