PHPWales 2020 - June 3rd to June 4th

mysqli_stmt::send_long_data

mysqli_stmt_send_long_data

(PHP 5, PHP 7)

mysqli_stmt::send_long_data -- mysqli_stmt_send_long_dataEnvoie des données MySQL par paquets

Description

Style orienté objet

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

Style procédural

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

Envoie les données au serveur par paquets, si la taille des données excède la limite de max_allowed_packet. Cette fonction peut être appelée plusieurs fois pour envoyer les données textes ou binaires de champs comme les BLOB ou TEXT.

Liste de paramètres

stmt

Style procédural uniquement : Un identifiant de requête retourné par la fonction mysqli_stmt_init().

param_nr

Indique quel paramètre doit être associé avec quelles données. Les paramètres sont numérotés à partir de 0.

data

Une chaîne de caractères contenant les données à envoyer.

Valeurs de retour

Cette fonction retourne TRUE en cas de succès ou FALSE si une erreur survient.

Exemples

Exemple #1 Style orienté objet

<?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(0fread($fp8192));
}
fclose($fp);
$stmt->execute();
?>

Voir aussi

add a note add a note

User Contributed Notes 3 notes

up
4
Gustavo Narea
13 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
0
ChrisH
17 days 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
-8
lussnig at smcc dot de
14 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