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