English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP基本教程

PHP上級教程

PHP & MySQL

PHPリファレンスマニュアル

PHP mysqli_stmt_send_long_data()関数の使用法および例

PHP MySQLi 参考マニュアル

mysqli_stmt_send_long_data()関数はデータをブロックごとに送信します。

定義と使用法

テーブルの某一列がBLOBタイプのTEXTの場合、このmysqli_stmt_send_long_data()この関数はデータをブロックごとにこの列に送信するために使用されます。

この関数を使用して接続を閉じることはできません。持続的な接続

文法

mysqli_stmt_send_long_data($stmt);

パラメータ

番号パラメータ及び説明
1

stmt(必須)

これは準備された文のオブジェクトを示します。

2

param_nr(必須)

これはデータを関連付ける必要があるパラメータを示す整数値です。

3

data(必須)

これは送信するデータを表す文字列値です。

返り値

PHP mysqli_stmt_send_long_data()関数はブール値を返し、成功時はtrue、失敗時はfalse

PHPバージョン

この関数は最初にPHPバージョン5で導入され、すべての上位バージョンで使用できます。

オンラインサンプル

以下の例では、mysqli_stmt_send_long_data()関数の使用法(プロセス指向スタイル)-

<?php
   //接続を確立
   $con = mysqli_connect("localhost", "root", "password", "mydb");
   //テーブルを作成
   mysqli_query($con, "CREATE TABLE test(message BLOB)");
   print("テーブルを作成 \n");
   //データを挿入
   $stmt = mysqli_prepare($con, "INSERT INTO test values(?)");
   //値をパラメータマークにバインド
   mysqli_stmt_bind_param($stmt, "b", $txt);
   $txt = NULL;
   $data = "This is sample data";
   mysqli_stmt_send_long_data($stmt, 0, $data);
   print("データを挿入");
   //ステートメントを実行
   mysqli_stmt_execute($stmt);
   //ステートメントを終了
   mysqli_stmt_close($stmt);
   //接続を閉じる
   mysqli_close($con);
?>

結果を出力

テーブルを作成
データを挿入

上記のプログラムを実行した後、テスト表の内容は以下の通りです:

mysql> select * from test;
+---------------------+
| message             |
+---------------------+
| これはサンプルデータ |
+---------------------+
1 セット内の行 (0.00 秒)

オンラインサンプル

オブジェクト指向スタイルでは、この関数の構文は以下の通りです$stmt-> send_long_data();。以下はその関数のオブジェクト指向スタイルの例です;

次のように名前が「test」のテーブルがあると仮定します;foo.txtのファイル、「こんにちは 元気ですか wへようこそ」の内容が「Hello how are you welcome to w」3codebox.com”

<?php
   //接続を確立
   $con = new mysqli("localhost", "root", "password", "mydb");
   //テーブルを作成
   $con -> query("CREATE TABLE test(message BLOB)");
   print("テーブルを作成 \n");
   //プレースホルダーを使用して値をテーブルに挿入
   $stmt = $con -> prepare("INSERT INTO test values(?)");
   //値をパラメータマークにバインド
   $txt = NULL;
   $stmt->bind_param("b", $txt);
   $fp = fopen("foo.txt", "r");
   while (!feof($fp)) {
      $stmt->send_long_data( 0, fread($fp, 8192));
   }
   print("データを挿入");
   fclose($fp);
   //ステートメントを実行
   $stmt->execute();
   //ステートメントを終了
   $stmt->close();
   //接続を閉じる
   $con->close();
?>

結果を出力

テーブルを作成
データを挿入

上記のプログラムを実行した後、テスト表の内容は以下の通りです:

mysql> select * from test;
+---------------------------------------------+
| メッセージ                                     |
+---------------------------------------------+
| こんにちは 元気ですか wへようこそ |3codebox.com |
+---------------------------------------------+
1 セット内の行 (0.00 秒)

PHP MySQLi 参考マニュアル