이 글은 주로 mysqli를 사용하여 PHP에서 MySQL 데이터베이스를 운영하는 방법을 소개합니다. 관심 있는 친구들이 참고하면 도움이 될 것입니다.
PHP의 mysqli 확장은 이전 버전의 모든 기능을 제공합니다. 또한 MySQL은 이미 모든 기능을 갖춘 데이터베이스 서버이므로 PHP에 몇 가지 새로운 기능이 추가됩니다. Mysqli는 이러한 새로운 기능도 지원합니다.
하나. 연결 설정 및 연결 끊기
MySQL 데이터베이스와 상호 작용할 때 연결이 먼저 설정되고 마지막으로 연결이 끊어집니다. 여기에는 서버에 연결하고 데이터베이스를 선택하고 마지막으로 연결을 닫는 것이 포함됩니다. mysqli의 거의 모든 기능과 마찬가지로 이는 객체 지향 접근 방식이나 절차적 접근 방식을 사용하여 수행할 수 있습니다.
1. mysqli 객체 생성
$_mysqli = newmysqli();
2. MySQL 호스트, 사용자, 비밀번호, 데이터베이스 연결
$_mysqli->connect( 'localhost' , 'root' , 'yangfan' , 'guest' );
3. 연결 매개변수를 사용하여 mysqli 객체를 생성합니다
$_mysqli = newmysqli( 'localhost' , 'root' , 'yangfan' , 'guest ' );
4. 데이터베이스를 개별적으로 선택합니다
$_mysqli->select_db( 'testguest' );
5. MySQL 연결을 끊습니다
$_mysqli->close( );
II. 연결 오류 처리
MySQL 데이터베이스에 연결할 수 없는 경우 이 페이지가 의도한 작업을 계속 수행할 가능성이 낮습니다. 따라서 연결 오류를 반드시 모니터링하고 그에 따라 대응하십시오. Mysqli 확장에는 mysqli_connect_errno() 및 mysqli_connect_error() 메서드와 같이 오류 정보를 캡처하는 데 사용할 수 있는 많은 기능이 포함되어 있습니다.
mysqli_connect_errno() 함수는 데이터베이스에 연결하여 반환된 오류 번호를 반환합니다.
Mysqli_connect_error() 함수는 데이터베이스에 연결하여 반환된 오류 코드를 반환합니다.
if(mysqli_connect_errno()) { echo' 数据库连接错误,错误信息: ' .mysqli_connect_error(); exit(); }
errno 속성은 데이터베이스 작업 중 오류 번호를 반환합니다.
error 속성은 데이터베이스 작업 중 오류 코드를 반환합니다.
if( $_mysqli ->errno) { echo' 数据库操作时发生错误,错误代码是: ' . $_mysqli ->error; }
세. 데이터베이스와의 상호 작용
대부분의 쿼리는 CRUD라고 하는 생성, 검색, 업데이트 및 삭제 작업과 관련되어 있습니다.
1. 데이터 얻기
웹 프로그램의 대부분의 작업은 요청된 데이터를 얻고 형식을 지정하는 것입니다. 이렇게 하려면 데이터베이스에 SELECT 쿼리를 보낸 다음, 결과를 반복적으로 처리하고, 각 행을 브라우저에 출력하고, 자신의 요구 사항에 따라 출력해야 합니다.
// 设置一下编码 utf8 $_mysqli->set_charset( "utf8" ); // 创建一句 SQL 语句 $_sql = "SELECT* FROM t g_user" ; // 执行 sql 语句把结果集赋给$_result $_result = $_mysqli->query( $_sql ); // 将结果集的第一行输出 print_r( $_result->fetch_row()); // 释放查询内存 ( 销毁 ) $_result->free();
2. 쿼리 결과 구문 분석
쿼리가 실행되고 결과 집합이 준비되면 얻은 결과 행을 구문 분석할 차례입니다. 여러 가지 방법을 사용하여 각 행의 필드를 가져올 수 있습니다. 필드를 참조하는 방법만 다르기 때문에 선택하는 방법은 주로 개인 취향에 따라 다릅니다.
결과셋을 객체에 담기
mysqli의 객체지향 문법을 사용할 수 있기 때문에 결과셋을 객체지향적으로 완벽하게 관리할 수 있습니다. 이는 fetch_object() 메소드를 사용하여 수행할 수 있습니다.
// 결과 세트를 객체로 압축
$_row = $_reslut->fetch_object();
// 객체에 필드(속성) 출력
echo $_row->tg_username;
// 모든 사용자 이름 탐색
while (!! $_row =$_reslut ->fetch_object()) {
echo$_row ->tg_username.' '
인덱스 배열 및 연관 배열 사용
$_row = $_reslut->fetch_array();
// 아래 첨자 3을 사용하여 필드(속성)를 출력합니다. echo $_row [ 3 ];// 결과 집합을 인덱스 배열로 압축합니다. $_row = $_reslut->fetch_row();echo $_row [ 3 ];// 압축 결과 집합을 연관 배열로 압축합니다$_row = $_reslut->fetch_assoc();echo $_row ['tg_username' ];3. 선택한 행과 영향을 받는 행을 결정합니다일반적으로 SELECT 쿼리에서 반환된 행 수 또는 INSERT, UPDATE 또는 DELET 쿼리의 영향을 받는 행 수를 확인할 수 있기를 원합니다. num_rows 및 Affected_rows라는 두 가지 속성을 사용할 수 있습니다.// 쿼리를 사용할 때 SELECT에서 쿼리한 행 수를 알고 싶다면 num_rows를 사용할 수 있습니다.
echo $_reslut->num_rows;// 쿼리를 사용할 때 SELECT, INSERT, UPDATE 및 DELETE 쿼리의 영향을 받는 행 수를 알고 싶으면 Affected_rows를 사용할 수 있습니다. $_mysqli아래
echo $_mysqli->affected_rows;
4. 移动指针的操作和获取字段
当你并不想从第一条数据开始获取 ,或者并不想从第一个字段获取 , 你可以使用数据指针移动或者字段指针移动的方式调整到恰当的位置。 当然 , 你还可以获取字段的名称及其相关的属性。
// 计算有多少条字段 echo $_reslut->field_count; // 获取字段的名称 $_field = $_reslut->fetch_field(); echo $_field->name; // 遍历字段 while (!! $_field =$_reslut ->fetch_field()) { echo$_field ->name. '<br />' ; } // 一次性取得字段数组 print_r( $_reslut->fetch_fields()); // 移动数据指针 $_reslut->data_seek( 5 ); // 移动字段指针 $_reslut->field_seek( 2 );
5. 执行多条 SQL 语句
有的时候 ,我们需要在一张页面上同时执行多条 SQL 语句 , 之前的方法就是分别创建多个结果集然后使用。但这样资源消耗很大,也不利于管理。PHP 提供了执行多条 SQL 语句的方法 $_mysqli->multi_query() ;
// 创建多条 SQL 语句 $_sql .="SELECT * FROM tg_user;" ; $_sql .="SELECT * FROM tg_photo;" ; $_sql .="SELECT * FROM tg_article" ; // 开始执行多条 SQL 语句 if ( $_mysqli->multi_query( $_sql )) { //开始获取第一条 SQL 语句的结果集 $_result= $_mysqli ->store_result(); print_r($_result ->fetch_array()); //将结果集指针移到下一个 $_mysqli->next_result(); $_result= $_mysqli ->store_result(); print_r($_result ->fetch_array()); $_mysqli->next_result(); $_result= $_mysqli ->store_result(); print_r($_result ->fetch_array()); } else { echo'sql 语句有误! ' ; }
6. 执行数据库事务
事务 (transaction)是作为整个一个单元的一组有序的数据库操作 。 如果一组中的所有操作都成功 , 则认为事务成功 ,即使只有一个失败操作 , 事务也不成功 。 如果所有操作成功完成 , 事务则提交 (commit) ,其修改将作用于所有其他数据库进程 。 如果一个操作失败 , 则事务将回滚 (roll back),该事务所有操作的影响都将取消。
首先 , 您的 MySQL 是InnoDB 或 BDB 引擎的一种 , 一般来说 , 你安装了 AppServ 的集成包 , 你选择 InnoDB的引擎的数据库即可 。 如果你建立的表不是 InnoDB , 可以在 phpmyadmin里修改。
// 首先你必须关闭自动提交数据 $_mysqli->autocommit( false ); // 创建一个 SQL 语句,必须同时运行成功,不能出现一个成功,一个失败 $_sql .="UPDATE tg_friend SET tg_state=tg_state+5 WHERE tg_id=1;" ; $_sql .="UPDATE tg_flower SET tg_flower=tg_flower-5 WHERE tg_id=1;" ; // 执行两条 SQL 语句 if ( $_mysqli->multi_query( $_sql )) { //获取第一条 SQL 一影响的行数 $_success= $_mysqli ->affected_rows == 1 ? true : false ; //下移,第二条 SQL $_mysqli->next_result(); //获取第二条 SQL 影响的行数 $_success2 = $_mysqli ->affected_rows == 1 ? true : false ; //判断是否都正常通过了,两个 SQL if( $_success && $_success2 ) { $_mysqli->commit(); echo' 完美提交! ' ; }else { $_mysqli->rollback(); echo' 程序出现异常! ' ; } } } else { echo"SQL 语句有误: " . $_mysqli ->errno. $_mysqli ->error; } // 最后还必须开启自动提交 $_mysqli->autocommit( true );
以上就是本文的全部内容,希望对大家的学习有所帮助。
相关推荐:
위 내용은 mysqli를 사용하여 PHP로 MySQL 데이터베이스를 작동하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!