ホームページ  >  記事  >  バックエンド開発  >  PHP Mysqli 共通コード集

PHP Mysqli 共通コード集

迷茫
迷茫オリジナル
2017-02-04 16:45:322459ブラウズ

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 [テーブル]

//中国語の文字化け

リーリー

ここではいくつかの例を示します

mysqliに接続する

MYSQL 設定ファイル config.ini.php を作成します。

config.ini.php の内容は次のとおりです。

リーリー

(mysqli を使用して MYSQL データベースに接続します)

リーリー

(その他の業務)

クエリ

リーリー

3 種類のクエリ結果の処理

リーリー

連想配列は、次のような入れ子になった配列です。

リーリー

mysqli_stmtクラスを使用する

Mysql4.1 バージョンでは、コマンド全体を 1 回だけ MYSQL サーバーに送信できる前処理 (プリペアド ステートメント) メカニズムが提供され始めました。これにより、MYSQL はコマンドを 1 回分析するだけで済み、必要性が大幅に減りました。送信用のデータ量により、コマンド処理の効率も向上します (接続が必要ない場合は、close() をすぐに閉じる必要があることに注意してください)

手順:

1. SQLコマンドを準備します
$sql = "ユーザー(名前,パスワード)の値(?,?)に挿入";
$stms = $mysqli->prepare($sql);
2. データをバインドする
$stms->bind_param('ss',$name,$pwd); ('ss' に注意: 次の変数 ($name,$pwd) に対応する必要があります
以来 生地orフロートタイプ
他のすべての型には文字列型が含まれます 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; 挿入コマンドの場合、挿入された行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
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。