• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • mysqli_stmt::send_long_data()

    (PHP 5, PHP 7)

    Send data in blocks

    说明

    面向对象风格
    mysqli_stmt::send_long_data(int $param_nr,string $data): bool
    过程化风格
    mysqli_stmt_send_long_data(mysqli_stmt$stmt,int $param_nr,string $data): bool

    Allows to send parameter data to the server in pieces(or chunks), e.g. if the size of a blob exceeds the size ofmax_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.

    参数

    $stmt

    仅以过程化样式:由mysqli_stmt_init()返回的 statement 标识。

    $param_nr

    Indicates which parameter to associate the data with. Parameters are numbered beginning with 0.

    $data

    A string containing data to be sent.

    返回值

    成功时返回TRUE,或者在失败时返回FALSE

    范例

    Example #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() Binds variables to a prepared statement as parameters
    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.
    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.
    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.