ホームページ >バックエンド開発 >PHPチュートリアル >MySQLI MySQLデータベースを操作する方法

MySQLI MySQLデータベースを操作する方法

不言
不言オリジナル
2018-06-06 09:26:192874ブラウズ

この記事では、主に PHP で MySQL データベースを操作する MySQLI 方法を紹介します。必要な友達に参考にしてください。

MySQL を操作する 3 つの方法。非永続的な接続では、データベースが使用されるたびに新しいプロセスが開かれます。

パフォーマンスが低く、PHP5.0 以降は放棄されます。

MySQLi

永続的な接続、サーバーの負荷を軽減、MySQL のみをサポート

欠点:

メモリを占有する

PDO (推奨)

MySQLi の共通機能を実現でき、ほとんどのデータベースをサポートします。

MySQLI メソッド (オブジェクト指向)

基本的な使用法:

1) データベースに接続します

$mysqli = new mysqli(‘host’,‘username’,‘password’,‘database’)
2) SQL ステートメントを実行します

$mysqli -> query($sql);

3) 結果を取得します
$result -> fetch_array([MYSQLI_ASSOC])     一个
$result -> fetch_assoc()                   一个

$result -> fetch_all([MYSQLI_ASSOC])       全部

デフォルトのメソッド 1 は

です。

メソッド 2 はメソッド 1 にパラメーターを加えたものと同等です。

4) 接続を閉じます

$mysqli -> close();

例:

<?php

// MySQLi增删改例子

// MySQLi方式连接数据库
$mysqli = new mysqli(&#39;localhost&#39;,&#39;root&#39;,&#39;123456789&#39;,&#39;test&#39;);

// 执行SQL语句
// 使用utf-8编码
$mysqli -> query(&#39;set names utf8&#39;);

// 插入
//$result = $mysqli -> query("INSERT users(name,money) VALUES(&#39;甜筒&#39;,4) ");
//$result = $mysqli -> query("INSERT users(name,money) VALUES(&#39;麦辣鸡腿堡&#39;,16) ");

// 修改
//$result = $mysqli -> query("UPDATE users SET `name`= &#39;麦旋风&#39; WHERE `id` = 2");

// 删除
//$result = $mysqli -> query("DELETE FROM users WHERE `id` = 5");

//var_dump($result);

/*********************查询*****************/ 
$result = $mysqli -> query("SELECT * FROM users");
// 获取结果集
$data = $result -> fetch_all(MYSQLI_ASSOC);

var_dump($data);
索引数组,添加参数后变成关联数组トランザクション制御

トランザクションは、複数の論理タスクを 1 つの実行単位 (合計の成功または失敗) に結合するデータベース操作です。

1) トランザクションを開きます

$mysqli -> autocommit(false)

このメソッドではトランザクションがすぐに送信されるため、パラメーター false を入力する必要があります。

2) トランザクションのロールバック

$mysqli -> rollback()

データにエラーがある場合、この方法を使用してデータを復元できます。

3) トランザクションの送信

$mysqli -> commit()

4) 接続を閉じる

$mysqli -> close()

注:

query() を使用して SQL ステートメントを実行する場合、データベース内の変更は考慮されず、SQL ステートメントが変更されたかどうかのみが考慮されます。間違っている。

そのため、query() の戻り値に依存して操作が成功したかどうかを判断することはできません。

影響を受ける行の数を使用して次のことを判断するには、

$mysqli -> affected_rows

インスタンス

 query('set names utf8');


// 开启事务
$mysqli -> autocommit(false);

//SQL
$sql1 = "UPDATE users SET `money`=`money`+1  WHERE `id` = 1";
$sql2 = "UPDATE users SET `money`=`money`-1  WHERE `id` = 11";

// 执行SQL语句
$result = $mysqli -> query($sql1);
$r1 = $mysqli -> affected_rows;

$result = $mysqli -> query($sql2);
$r2 = $mysqli -> affected_rows;

if($r1 > 0 && $r2 > 0){
    // 提交事务
    $mysqli -> commit();
    echo '操作成功';
}else{
    // 事务回滚
    $mysqli -> rollback();
    echo '操作失败';
}

前処理

前処理を行うには、まず SQL ステートメントをサーバーに送信し、プリコンパイルを実行します。

クライアントが SQL ステートメントを実行するときは、入力パラメーターをアップロードするだけで済みます。

複数の読み取りまたはストレージが関係する場合、通常の SQL 実行操作よりも効率が高くなります。

1) SQL ステートメントの

VALUE 内の $sql = “???”

パラメータ

では、代わりに疑問符を使用します。

2) プリコンパイル済みオブジェクトの作成

 $stmt = $mysqli -> prepare($sql)

3) パラメータの割り当て

$stmt -> bind_param(&#39;参数类型&#39;, 参数1, 参数2...)

パラメータの型の説明:

string-s int-i double-d bool-b

特別な注意事項:

パラメータの型はスペースやカンマを使用せずに順番に記述します。たとえば、パラメータ 1 は文字列、パラメータ 2 は次のように記述します。 4 ) 変数バインディング結果セット (このステップはクエリにのみ必要で、他の操作の場合はこのステップをスキップしてください)

$stmt -> bind_result()


特別な注意:
bind_result 変数は select ステートメントのフィールド名に対応するため、必ず注意してください数量を指定して注文してください! ! !
5) コードを実行します
$stmt -> execute()
$stmt -> bind_param('si', 参数1, 参数2)6) レコードをクエリし、PHP プログラムに保存します(クエリ操作はオプション)

$stmt->store_result()

詳細は以下のリンクを参照してください

詳細な分析7) 各レコードの結果を取得します

$stmt ->fetch()

 query('set names utf8');

// SQL语句
$sql = "SELECT * FROM users WHERE id>? ";

// 创建预编译对象
$stmt = $mysqli -> prepare($sql);

// 参数绑定
$id = 1;
$stmt -> bind_param('i',$id);

// 绑定结果集   参数要和表的参数一致
$stmt -> bind_result($id,$name,$money,$age);

// 执行SQL语句
$stmt -> execute();

// 执行SQL语句
$stmt->store_result();

// 接收结果集
while($stmt -> fetch()){
    $data[] = [
        'id' => $id,
        'name' => $name,
        'money' => $money
    ];
}

var_dump($data);

関連する推奨事項:

PHP 操作データベース: 選択操作 Operation

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。