PHP mysqli_stmt::send_long_data() / mysqli_stmt_send_long_data() 函数允许发送数据 例如,如果 blob 的大小超过 max_allowed_packet 的大小,则以片段(或块)的形式向服务器传递参数。可以多次调用此函数来发送列的字符或二进制数据值的一部分,该列必须是 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);
?>