ホームページ > バックエンド開発 > PHPチュートリアル > PHPはmysqliを利用してMySQLデータベースを操作する方法を実装しています

PHPはmysqliを利用してMySQLデータベースを操作する方法を実装しています

墨辰丷
リリース: 2023-03-28 08:16:02
オリジナル
1652 人が閲覧しました

この記事では、mysqli を使用して PHP を使用して MySQL データベースを操作する方法を主に紹介します。興味のある方はぜひ参考にしてください。

PHP の mysqli 拡張機能は、以前のバージョンのすべての機能を提供します。さらに、MySQL はすでにフル機能のデータベース サーバーであるため、これにより PHP にいくつかの新機能が追加されます。 Mysqli はこれらの新機能もサポートしています。

1つ。 接続の確立と切断

MySQL データベースと対話する場合、最初に接続が確立され、最後に接続が切断されます。これには、サーバーへの接続とデータベースの選択、そして最後に接続の終了が含まれます。 mysqli のほぼすべての機能と同様に、これはオブジェクト指向のアプローチまたは手続き型の方法を使用して実現できます。

1. mysqli オブジェクトを作成します

$_mysqli = newmysqli();

2. MySQL ホスト、ユーザー、パスワード、データベースを接続します

$_mysqli->connect( ' localhost' , 'root' , 'yangfan' , 'guest' );

3. 接続パラメーターを使用して mysqli オブジェクトを作成します

$_mysqli( 'localhost' , 'root' , 'yangfan' , 'guest ');

4。

Ⅱ。 接続エラーの処理

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 属性は、データベース操作中のエラー コードを返します。

りー


三. データベースとの対話

クエリの大部分は、作成、取得、更新、削除のタスクに関連しており、これらは総称して CRUD と呼ばれます。

1. データを取得する

Web プログラムの作業のほとんどは、要求されたデータを取得してフォーマットすることです。これを行うには、SELECT クエリをデータベースに送信し、結果を繰り返し処理し、各行をブラウザに出力し、独自の要件に従って出力する必要があります。

if( $_mysqli ->errno) {

echo' 数据库操作时发生错误,错误代码是: ' . $_mysqli ->error;

}
ログイン後にコピー

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 という 2 つの属性を使用できます

// クエリを使用するときに、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. &#39;<br />&#39; ;

}

// 一次性取得字段数组

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&#39;sql 语句有误! &#39; ;

}
ログイン後にコピー

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&#39; 完美提交! &#39; ;

}else {

$_mysqli->rollback();

echo&#39; 程序出现异常! &#39; ;

}

}

} else {

echo"SQL 语句有误: " . $_mysqli ->errno. $_mysqli ->error;

}

// 最后还必须开启自动提交

$_mysqli->autocommit( true );
ログイン後にコピー

以上就是本文的全部内容,希望对大家的学习有所帮助。


相关推荐:

php实现的mysqldb读写分离操作类

PHP使用mysqli操作MySQL数据库的方法

php、mysql查询当天,查询本周,查询本月的数据实例详解

以上がPHPはmysqliを利用してMySQLデータベースを操作する方法を実装していますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート