Mysqli には、オブジェクト指向とプロセス指向という 2 つの方法でデータベースを操作できます。これら 2 つの方法をそれぞれ見てみましょう。
1.オブジェクト指向
オブジェクト指向の方法では、mysqli はクラスにカプセル化され、その構築方法は次のとおりです:
__construct ([ string $host [, string $username [, string $passwd [, string $ dbname
[, int $port [, string $socket ]]]]]] )
上記の構文に含まれるパラメーターは次のように説明されます。
l ホスト: 接続されているサーバーのアドレス。
l ユーザー名: データベースに接続するユーザー名。デフォルト値はサーバープロセス所有者のユーザー名です。
l passwd: データベースに接続するためのパスワード。デフォルト値は空です。
l dbname: 接続されているデータベースの名前。
l ポート: TCP ポート番号。
l ソケット: UNIX ドメインソケット。
MySQL との接続を確立するには、次のコードのように、コンストラクターを通じて mysqli クラスをインスタンス化できます。
$db_host="localhost" //接続されたサーバーのアドレス
$db_user= " root "; // データベースに接続するユーザー名
$ db_psw =" root "; // データベースに接続するパスワード$ db_name =" sunyang " // 接続するデータベース名 ,$db_user,$db_psw, $db_name);
?>
MySQL には、MySQL に接続するためのメンバー メソッド connect() も用意されています。空のコンストラクター メソッドを使用して mysqli クラスをインスタンス化する場合、たとえば次のコードのように、mysqli オブジェクトの connect() メソッドを呼び出して MySQL に接続することもできます。 ; サーバーアドレス
$db_user="root";
$db_name="sunyang" ; $mysqli=新しい mysqli();$mysqli->connect($db_host,$ db_user,$db_psw,$db_name);
?>
mysqli オブジェクトで close() を呼び出して、MySQL サーバーへの接続を閉じます。たとえば、次のメソッドを使用します。 ;
2.プロセス指向
プロセス指向の方法では、mysqli 拡張機能は MySQL との接続を確立する関数 mysqli_connect() を提供します。この関数の構文形式は次のとおりです。
mysqli mysqli_connect ([ string $host [, 文字列 $username [, 文字列 $passwd
G [, string $ dbname [, int $ port [, string $socket]]]]]
mysqli_connect () 関数は、mysql 拡張機能の mysql_connect () 関数とよく似ています。以下は mysqli_connec t () です。関数の使用法例:
$connection = mysqli_connect("localhost","root","root","sunyang");
if ( $connection ) {
echo "データベース库接続成功";
}else {
echo "データベース接続に失敗しました";
}
?>
mysqli_close() 関数を使用して接続を閉じますMySQL サーバー、例:
mysqli_close();
3 mysqli を使用してデータにアクセスする
mysqli を使用してデータにアクセスする方法には、オブジェクト指向メソッドとプロセス指向メソッドも含まれます。このセクションでは、オブジェクト指向メソッドの使用方法のみを説明します。 mysqli について 拡張機能で使用されるプロセス指向のアプローチについては、ここでは詳しく説明しません。興味のある方は、公式ドキュメントを参照して関連情報を入手してください。
mysqli では、query() メソッドを使用してクエリを実行します。このメソッドの構文形式は次のとおりです。
混合クエリ ( string $query [, int $resultmode ] )
上記の構文に含まれるパラメータは次のように説明されています。
l クエリ: SQL ステートメントがサーバーに送信されます。
l resultmode: このパラメータは 2 つの値を受け入れます。1 つは MYSQLI_STORE_RESULT で、結果がバッファリングされたセットとして返されることを意味し、もう 1 つは MYSQLI_USE_RESULT で、結果がバッファリングされていないセットとして返されることを意味します。
以下は、query() メソッドを使用してクエリを実行する例です。
$mysqli=new mysqli("localhost","root","root","sunyang"); //mysqli をインスタンス化します
$query="select * from 従業員";
$result=$mysqli->query($query);
if ($result) {
if($result->num_rows>) ;0){ //結果セットの行数が 0 より大きいかどうかを判断します
echo ($row [0])."
エコー ($row[1])."
echo ($row[2])."
echo ($row[3]) ."
{
echo "クエリ失敗しました";
}
$result->free() ;
$mysqli->close();
?>
上記のコードでは、num_rows は結果セットの属性であり、戻り値を返します。結果セット内の行数。 fetch_array() メソッドは、結果セット内のレコードを配列に入れて返します。最後に、free() メソッドを使用して結果セット内のメモリを解放し、close() メソッドを使用してデータベース接続を閉じます。
レコードの削除 (delete)、レコードの保存 (insert)、およびレコードの変更 (update) の操作も、query() メソッドを使用して実行されます。 以下は、レコードの削除の例です。
$ mysqli =new mysqli("localhost","root","root","sunyang"); //mysqli をインスタンス化します
$query="emp_id=2 の従業員から削除します" $result=$mysqli-> ;クエリ($ result);レコードの削除操作 (delete) は、それに応じて SQL ステートメントを変更するだけです。
4 プリペアド ステートメント
PHP では、プリペアド ステートメントのクエリを実行するには prepare() メソッドを使用し、プリペアド ステートメントを実行するには use() メソッドを使用します。 . ステートメントを準備します。 PHP には 2 種類のプリペアド ステートメントがあります。1 つは結果をバインドするもの、もう 1 つはパラメータをバインドするものです。
(1
)
.バインディング結果
いわゆるバインディング結果は、PHP スクリプト内のカスタム変数を結果セット内の対応するフィールドにバインドします。これらの変数は、クエリされたレコードを表します。
$mysqli=new mysqli("localhost","root","root","sunyang"); //mysqli をインスタンス化します
$query="select * from 従業員"; result=$mysqli->prepare($query) //準備されたステートメントを実行します
$result->bind_result($id,$number,$name,$age); echo $name;
echo $ 年齢; ;} $ result- & gt; close (); // 事前準備文をオフにします $ mysqli- & gt; close (); スクリプト内の変数はフィールドと 1 対 1 に対応する必要があります。バインド後、 fetch() メソッドを使用して結果セットにバインドされた変数を 1 つずつフェッチし、最後に準備されたステートメントとデータベース接続をそれぞれ閉じます。
(2).バインドパラメータ
いわゆるバインドパラメータは、PHP スクリプトのカスタム変数を SQL ステートメントのパラメータにバインドします (パラメータは "?" で置き換えられます)。バインドパラメータは、bind_param() メソッドを使用します。このメソッドの構文形式は次のとおりです:
bool binding_param ( string $types ,mixed &$var1 [,mixed &$... ] )
上記の構文に含まれるパラメーターは次のように説明されます。
l タイプ: 表に示すように、バインドされた変数のデータタイプは 4 つの文字タイプを受け入れます。
文字型 | 表現されるデータ型 |
I | 整数 |
D | ダブル |
S | 文字列 |
B | ブロブ |
パラメーターの型とバインドされた変数で受け入れられる文字の種類は 1 対 1 に対応している必要があります。
l var1: バインドされた変数の数は、SQL ステートメント内のパラメーターの数と一致する必要があります。 数参バインディングパラメータのコード例は次のとおりです。
& & lt;? $ MySQLI = New MySQLI ("LocalHost", "ROOT", "ROOT", "Sunyang"); // mysqli の例$ Query ="従業員 (emp_number,emp_name,emp_age) の値に挿入 (?,?,?)"; "ssi" ,$number,$name,$age); // バインドパラメータ
$number='sy0807'
$name='employee7'
$result-> use( );
スクリプト内でパラメータとバインディングを同時にバインドすることもできます。 その結果、サンプル コードは次のようになります。
$mysqli=new mysqli("localhost ","root","root","sunyang"); //mysqli をインスタンス化します
$query="select * from従業員 where emp_id < ?";
$result=$mysqli->prepare($query );
$result->bind_param("i",$emp_id);
$result->execute(); number,$name,$age); //結果をバインドします
while ($result-> ;fetch()) {
echo $id."
echo $number."
echo $age ."
}
$result->close();
$mysqli-> close();
?>
5 複数のクエリ
mysqli 拡張機能は、複数のクエリを連続的に実行できる multi_query() メソッドを提供します。
bool mysqli_multi_queりー( mysqli $link , string $query )
複数のクエリを実行する場合、最後のクエリ ステートメントを除き、各クエリ ステートメントは「;」で区切る必要があります。複数のクエリを実行するコード例は次のとおりです。
$ MySQLI = New MySQLI ("LocalHost", "ROOT", "ROOT", "Sunyang"); // インスタンス化された mysqli
$ query = "select emp_name from Employeeeeeeeeeeeeeee ; ; ";
$query .= "depment から dep_name を選択 ";
if ($mysqli->multi_query($query)) { do {
->ストア_result()) {
;「
"; result->close();
echo ("----- -------------
$mysqli->close() ;//接続を閉じます
?>
上記のコードでは、バッファされた結果セットを取得するために、store_result() メソッドが使用されています。は、マルチクエリからさらにクエリ結果があるかどうかを確認するために使用され、 next_result() メソッドは、マルチクエリから次のクエリ結果を準備するために使用されます。