(PHP 5)
mysqli_stmt::send_long_data -- mysqli_stmt_send_long_data — Send data in blocks
Objektorientierter Stil
Prozeduraler Stil
Allows to send parameter data to the server in pieces (or chunks), e.g. if the size of a blob exceeds the size of max_allowed_packet. This function can be called multiple times to send the parts of a character or binary data value for a column, which must be one of the TEXT or BLOB datatypes.
Nur bei prozeduralem Aufruf: ein von mysqli_stmt_init() zurückgegebenes Statementobjekt.
Indicates which parameter to associate the data with. Parameters are numbered beginning with 0.
A string containing data to be sent.
Gibt bei Erfolg TRUE zurück. Im Fehlerfall wird FALSE zurückgegeben.
Objektorientierter Stil
<?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();
?>
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.
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.