English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
mysqli_stmt_execute()関数は準備されたクエリを実行します。
mysqli_stmt_execute()関数は、prepare()関数で作成された準備されたステートメントオブジェクトを受け取り、それを実行します。実行中に、存在するすべてのパラメータマークは適切なデータに自動的に置き換わります。
この関数の後にmysqli_stmt_affected_rows()関数(UPDATE、DELETE、INSERTクエリの場合)を呼び出すと、影響を受けた行数を取得します。同様に、mysqli_stmt_fetch()関数(SELECTの場合)を呼び出すと、結果セットが返されます。
mysqli_stmt_execute($stmt);
順序番号 | パラメータおよび説明 |
---|---|
1 | 必要なコンテンツ これは準備された文のオブジェクトを表します。 |
PHP mysqli_stmt_execute()関数は布尔値を返し、成功時はtrue、失敗時はfalse。
この関数は最初にPHPバージョン5のバージョンから導入され、すべてのより高いバージョンで使用できます。
MySQLデータベースにemployeeという名前のテーブルが作成されており、以下の内容になっていると仮定します:
mysql> select * from employee; +------------+--------------+------+------+--------+ | FIRST_NAME | LAST_NAME | AGE | SEX | INCOME | +------------+--------------+------+------+--------+ | Vinay | Bhattacharya | 20 | M | 16000 | | Sharukh | Sheik | 25 | M | 18300 | | Trupthi | Mishra | 24 | F | 36000 | | Sheldon | Cooper | 25 | M | 12256 | | Sarmista | Sharma | 28 | F | 15000 | +------------+--------------+------+------+--------+ 5 rows in set (0.00 sec)
以下の例では、mysqli_stmt_execute()関数の使用方法(手続き型スタイル)、実行およびプレースホルダー付きのupdate文:
<?php $con = mysqli_connect("localhost", "root", "password", "mydb"); $stmt = mysqli_prepare($con, "UPDATE employee set INCOME=INCOME-? where INCOME > ?"); mysqli_stmt_execute($stmt, "si", $reduct, $limit); $limit = 16000; $reduct = 5000; //ステートメントを実行 mysqli_stmt_execute($stmt); print("レコードが更新されました......\n"); //ステートメントを終了 mysqli_stmt_execute($stmt); //接続を閉じる mysqli_close($con); ?>
結果を出力
レコードが更新されました......
上記のプログラムを実行した後、employee表の内容は以下の通りです:
mysql> select * from employee; +------------+--------------+------+------+--------+ | FIRST_NAME | LAST_NAME | AGE | SEX | INCOME | +------------+--------------+------+------+--------+ | Vinay | Bhattacharya | 20 | M | 16000 | | Sharukh | Sheik | 25 | M | 13300 | | Trupthi | Mishra | 24 | F | 31000 | | Sheldon | Cooper | 25 | M | 12256 | | Sarmista | Sharma | 28 | F | 15000 | +------------+--------------+------+------+--------+ 5 rows in set (0.00 sec)
オブジェクト指向スタイルでは、この関数の構文は以下の通りです$stmt-> execute();。以下は、オブジェクト指向スタイルでのこの関数の例です。実行およびプレースホルダー付きのinsert文
<?php //接続の確立 $con = new mysqli("localhost", "root", "password", "mydb"); //テーブルの作成 $con -> クエリ「CREATE TABLE myplayers(ID INT, First_Name VARCHAR(255), Last_Name VARCHAR(255), Place_Of_Birth VARCHAR(255), Country VARCHAR(255))"); print("テーブルの作成.....\n"); //プレーステートメントを使用して値を挿入する $stmt = $con -> prepare( "INSERT INTO myplayers values(?, ?, ?, ?, ?)"); $stmt -> bind_param("issss", $id, $fname, $lname, $pob, $country); $id = 1; $fname = 'Shikhar'; $lname = 'Dhawan'; $pob = 'Delhi'; $country = 'India'; //ステートメントを実行 $stmt->execute(); //ステートメントを終了 $stmt->close(); //接続を閉じる $con->close(); ?>
結果を出力
テーブルの作成.....
以下のように実行することもできますmysqli_stmt_prepare()関数で作成されたステートメント -
<?php $con = mysqli_connect("localhost", "root", "password", "mydb"); $query = "CREATE TABLE Test(Name VARCHAR(255), AGE INT)"; mysqli_query($con, $query); print("テーブルの作成.....\n"); //ステートメントの初期化 $stmt = mysqli_stmt_init($con); mysqli_stmt_prepare($stmt, "INSERT INTO Test values(?, ?)"); mysqli_stmt_bind_param($stmt, "si", $Name, $Age); $Name = 'Raju'; $Age = 25; print("レコードを挿入....."); //ステートメントを実行 mysqli_stmt_execute($stmt); //ステートメントを終了 mysqli_stmt_close($stmt); //接続を閉じる mysqli_close($con); ?>
結果を出力
テーブルの作成..... レコードを挿入.....