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