mysqli_stmt::send_long_data

mysqli_stmt_send_long_data

(PHP 5, PHP 7, PHP 8)

mysqli_stmt::send_long_data -- mysqli_stmt_send_long_dataEnviar datos en bloques

Descripción

Estilo orientado a objetos

mysqli_stmt::send_long_data(int $param_nr, string $data): bool

Estilo por procedimientos

mysqli_stmt_send_long_data(mysqli_stmt $stmt, int $param_nr, string $data): bool

Permite el envío de datos de parámetros en piezas al servidor (o trozos), p.ej. si el tamaño de un blob excede el tamaño de max_allowed_packet. Esta función puede llamarse múltiples veces para enviar las partes de un valor de datos de carácter o binarios de una columna, la cual debe ser del tipo de datos TEXT o BLOB.

Parámetros

stmt

Sólo estilo por procediminetos: Un identificador de declaraciones devuelto por mysqli_stmt_init().

param_nr

Indica qué parámetro asociar con los datos. Los parámetros son numerados comenzando por el 0.

data

Una cadena que contiene los datos a enviar.

Valores devueltos

Devuelve true en caso de éxito o false en caso de error.

Ejemplos

Ejemplo #1 Estilo orientado a objetos

<?php
$sentencia
= $mysqli->prepare("INSERT INTO messages (message) VALUES (?)");
$null = NULL;
$sentencia->bind_param("b", $null);
$fp = fopen("messages.txt", "r");
while (!
feof($fp)) {
$sentencia->send_long_data(0, fread($fp, 8192));
}
fclose($fp);
$sentencia->execute();
?>

Ver también

add a note add a note

User Contributed Notes 4 notes

up
4
Gustavo Narea
17 years ago
Just in case:

'max_allowed_packet' 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.
up
1
ChrisH
4 years ago
If you are trying to write a single field which is above max_allowed_packet then this function will not help you (contrary to what the documentation example seems to show above).

Parameters in MySQL are still restricted by max_allowed_packet on a per-field basis so you will get an error like:

“mysqli_sql_exception: Parameter of prepared statement which is set through mysql_send_long_data() is longer than 'max_long_data_size' bytes”

The only real use case for this function seems to be if you are writing multiple long fields which when combined would go over max_allowed_packet.
up
0
DimeCadmium
3 years ago
To ChrisH's note, you must call this function multiple times with the same $param_nr, to send the first max_allowed_packet bytes, then the next, and so on. So you might need to do a for loop over changing substr() indexes, or etc.
up
-8
lussnig at smcc dot de
18 years ago
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.
To Top