Just in case:
'max_allowed_package' is a MySQL variable; it is not a PHP function/variable/constant.
Further info: http://dev.mysql.com/doc/refman/4.1/en/packet-too-large.html
HTH.
mysqli_stmt::send_long_data
mysqli_stmt_send_long_data
(PHP 5)
mysqli_stmt::send_long_data -- mysqli_stmt_send_long_data — データをブロックで送信する
説明
オブジェクト指向型(メソッド)
bool mysqli_stmt::send_long_data
( int $param_nr
, string $data
)
手続き型:
bool mysqli_stmt_send_long_data
( mysqli_stmt $stmt
, int $param_nr
, string $data
)
パラメータのデータを、サーバに分割して送信します。例えば blob のサイズが max_allowed_packet を越えてしまう場合などに使用します。 この関数は、カラムに文字やバイナリのデータを送信するために複数回 コールすることが可能です。そのカラムの型は TEXT あるいは BLOB である 必要があります。
パラメータ
- stmt
-
手続き型のみ: mysqli_stmt_init() が返すステートメント ID。
- param_nr
-
データに関連付けるパラメータを示します。 パラメータの番号は 0 から始まります。
- data
-
送信するデータを含む文字列。
返り値
成功した場合に TRUE を、失敗した場合に FALSE を返します。
例
例1 オブジェクト指向形式
<?php
$stmt = $mysqli->prepare("INSERT INTO messages (message) VALUES (?)");
$null = NULL;
$stmt->bind_param("b", $null);
$fp = fopen("messages.txt", "r");
while (!feof($fp)) {
$stmt->send_long_data(0, fread($fp, 8192));
}
fclose($fp);
$stmt->execute();
?>
参考
- mysqli_prepare() - 実行するための SQL ステートメントを準備する
- mysqli_stmt_bind_param() - プリペアドステートメントのパラメータに変数をバインドする
mysqli_stmt::send_long_data
Gustavo Narea
17-May-2006 02:00
17-May-2006 02:00
lussnig at smcc dot de
26-Oct-2005 02:31
26-Oct-2005 02:31
send_long_data() these function is normaly used to store Data in Binary blob field. But if the table is UTF8 and connection charset it does not expect binary data (for example images) it take utf8 Data.
This mean you have to do utf8_encode bevore sending binary data.
