PHP MySQLi 函数

PHP mysqli_stmt::send_long_data() / mysqli_stmt_send_long_data() 函数允许发送数据 例如,如果 blob 的大小超过 max_allowed_pa​​cket 的大小,则以片段(或块)的形式向服务器传递参数。可以多次调用此函数来发送列的字符或二进制数据值的一部分,该列必须是 TEXT 或 BLOB 数据类型之一。

语法

//面向对象风格
public mysqli_stmt::bind_param(param_num, data)

//面向过程风格
mysqli_stmt_bind_param(statement, param_num, data)

参数

statement 必填。 仅适用于面向过程风格:指定 mysqli_stmt_init() 返回的 mysqli_stmt 对象。
param_num 必填。 指定与数据关联的参数。参数从 0 开始编号。
数据 必填。 指定包含要发送的数据的字符串。

返回值

成功时返回 true,失败时返回 false。

示例:面向对象风格

下面的示例展示了mysqli_stmt::bind_param()方法的用法。

<?php
//建立与数据库的连接
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_errno) {
  echo "Failed to connect to MySQL: ". $mysqli->connect_error;
  exit();
}

$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);

//执行SQL语句
$stmt->execute();

//关闭连接
$mysqli->close();
?>

示例:面向过程风格

下面的示例显示了mysqli_stmt_bind_param()函数的用法。

<?php
//建立与数据库的连接
$mysqli = mysqli_connect("localhost", "user", "password", "database");
if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: ". mysqli_connect_error();
  exit();
}

$stmt = mysqli_prepare($mysqli, "INSERT INTO messages (message) VALUES (?)");
$null = NULL;
mysqli_stmt_bind_param($stmt, "b", $null);
$fp = fopen("messages.txt", "r");
while (!feof($fp)) {
  mysqli_stmt_send_long_data($stmt, 0, fread($fp, 8192));
}
fclose($fp);

//执行SQL语句
mysqli_stmt_execute($stmt);

//关闭连接
mysqli_close($mysqli);
?>