PHP 데이터베이스 연결 단계
우리는 모든 사람을 위한 데이터베이스 연결의 가장 중요한 8가지 단계를 농담으로 "데이터베이스 연결의 8단계"라고 부릅니다.
8단계는 다음과 같으며, 각 단계에서 사용되는 기능을 설명합니다.
1단계: 데이터베이스 서버에 연결
类型 | 说明 |
---|---|
函数 | mysqli_connect |
功能 | 连接到mysql数据库服务器 |
参数1 | 主机 |
参数2 | 数据库服务器登陆名 |
参数3 | 密码 |
参数4 | 数据库的名称 |
参数5 | 数据库服务器端口不填默认3306 |
파라미터 4의 경우, 이 단계에서 데이터베이스 이름을 입력하고 선택했으므로 세 번째 단계를 수행할 필요가 없습니다.
2단계: 판단 오류
类型 | 说明 |
---|---|
函数 | mysqli_errno |
功能 | 返回连接错误号,无错误返回0 |
参数1 | 传入mysqli_connect返回的资源 |
类型 | 说明 |
---|---|
函数 | mysqli_error |
功能 | 返回连接错误字符串 |
参数1 | 传入mysqli_connect返回的资源 |
3단계: 데이터베이스 선택
类型 | 说明 |
---|---|
函数 | mysqli_select_db |
功能 | 选择本连接中的数据库 |
参数1 | 传入mysqli_connect返回的资源 |
参数2 | 需要连接的数据库名 |
1단계에서 데이터베이스가 채워졌다면, 필요 없음 다른 데이터베이스로 변경하는 경우 세 번째 단계를 수행할 필요가 없습니다.
4단계: 문자 세트 설정
类型 | 说明 |
---|---|
函数 | mysqli_set_charset |
功能 | 设置与mysql服力器连接,结果,校验字符集 |
参数1 | 传入mysqli_connect返回的资源 |
参数2 | 字符集类型 |
자세한 내용은 "13.6 잘못된 데이터 표시에 대한 궁극적인 솔루션" 책을 참고하세요.
5단계: SQL 문 준비
는 실제로 SQL 문 문자열입니다.
예:
<?php $sql = "insert into user(username,password) values('$username','$password')"; $con = mysql_connect("localhost","peter","abc123"); if (!$con) { die('Could not connect: ' . mysql_error()); } // some code ?>
우리는 일반적으로 SQL 문에 사용할 변수를 할당합니다. 그러나 변수나 SQL 문에 오류가 있어 해결이 매우 어렵습니다.
실제 업무 경험을 바탕으로 이 단계를 추가했습니다.
이 단계를 실행할 때 오류가 보고되면 SQL 문을 인쇄하여 phpMyAdmin 또는 관련 도구에 붙여 넣을 수 있습니다.
트러블슈팅 시 실행이 성공하면 SQL 문에 문제가 없다는 의미입니다. 실행이 실패하면 SQL 문을 다시 확인하세요.
6단계: SQL 문 보내기
类型 | 说明 |
---|---|
函数 | mysqli_query |
功能 | 发送SQL语句 |
参数1 | 传入mysqli_connect返回的资源 |
参数2 | 传入发送的SQL语句 |
SQL 문이 준비되었으며 mysqli_query를 통해 MySQL 서버로 전송되어야 합니다.
MySQL 서버는 전송된 SQL 문을 실행하여 실행합니다.
7단계: 실행이 정상인지 데이터를 순회하는지 확인
읽기
6단계에서는 선택한 카테고리의 명령문이 전송되며 결과는 일반적으로 필요합니다. 출력되어 표시됩니다. 표시 데이터를 순회하는 기능을 사용해야 합니다.
类型 | 说明 |
---|---|
函数 | mysqli_fetch_array |
功能 | 得到result结果集中的数据,返回数组进行便利 |
参数1 | 传入查询出来的结果变量 |
参数2 | 传入MYSQLI_NUM返回索引数组,MYSQLI_ASSOC返回关联数组,MYSQLI_BOTH返回索引和关联 |
类型 | 说明 |
---|---|
函数 | mysqli_fetch_assoc |
功能 | 得到result结果集中的数据,返回关联数组进行便利 |
参数1 | 传入查询出来的结果变量 |
类型 | 说明 |
---|---|
函数 | mysqli_fetch_row |
功能 | 得到result结果集中的数据,返回索引数组进行便利 |
参数1 | 传入查询出来的结果变量 |
类型 | 说明 |
---|---|
函数 | mysqli_fetch_object |
功能 | 得到result结果集中的数据,返回对象进行遍历 |
参数1 | 传入查询出来的结果变量 |
类型 | 说明 |
---|---|
函数 | mysqli_num_rows |
功能 | 返回查询出来的结果总数 |
参数1 | 传入查询出来的结果变量 |
类型 | 说明 |
---|---|
函数 | mysqli_num_rows |
功能 | 返回查询出来的结果总数 |
参数1 | 传入查询出来的结果变量 |
注 | 实际工作中用得非常少,了解 |
쓰기
6단계에서 insert 문이 전송되면 일반적으로 실행 성공 여부를 확인하거나 자체 증분 ID를 동시에 가져와야 합니다.
类型 | 说明 |
---|---|
函数 | mysqli_fetch_field |
功能 | 遍历数据行 |
参数1 | 传入查询出来的结果变量 |
수정 및 삭제
6단계에서는 카테고리 업데이트 및 삭제 명령문이 전송됩니다. 실행이 성공했는지 여부만 확인하면 됩니다.
모든 사람이 확인할 수 있도록 일반적으로 사용되는 기능을 데이터 테이블에 나열합니다.
8단계: 데이터베이스 닫기
类型 | 说明 |
---|---|
函数 | mysqli_close |
功能 | 关闭数据库连接 |
参数1 | 传入mysqli_connect返回的资源 |
데이터베이스 연결은 리소스 유형입니다. 이전 장에서 리소스 유형을 설명할 때 이에 대해 설명했습니다. 관련된 모든 리소스 유형은 열리거나 닫힙니다. 이를 통해 PHP는 리소스를 보다 효율적으로 처리하고 재활용할 수 있습니다.
따라서 데이터베이스 연결이 성공한 후에는 사용할 필요가 없습니다. 이 연결을 닫을 수 있습니다.
기타: 서버 정보 표시 기능
类型 | 说明 |
---|---|
函数 | mysqli_get_server_info |
功能 | 返回服务器信息 |
参数1 | 传入mysqli_connect返回的资源 |
类型 | 说明 |
---|---|
函数 | mysqli_get_server_version |
功能 | 返回服务器版本 |
参数1 | 传入mysqli_connect返回的资源 |
참고:
Mysqli에서는 절차적 방법만 배우면 됩니다. 객체 지향 단계의 실제 작업에서는 mysqli의 객체 사용을 완전히 포기하고 대신 PDO 객체를 사용하여 데이터베이스에 연결했습니다.