mysqli_stmt::send_long_data
(mysqli_stmt_send_long_data)以块为单位发送数据
mysqli_stmt::send_long_data()函数用于向预处理语句中的绑定参数发送大量数据。它主要用于发送BLOB或TEXT类型的数据,因为这些类型的数据在内存中可能会占用大量空间。
语法: bool mysqli_stmt::send_long_data(int $param_nr, string $data)
参数:
返回值: 如果成功发送数据,则返回true;否则返回false。
示例: 假设有一个名为"employees"的数据库表,其中有一个BLOB类型的字段"resume",我们希望将一份简历文件保存到该字段中。
// 连接数据库
$mysqli = new mysqli("localhost", "username", "password", "database");
// 准备预处理语句
$stmt = $mysqli->prepare("INSERT INTO employees (resume) VALUES (?)");
// 打开文件并读取数据
$file = fopen("resume.pdf", "rb");
$data = fread($file, filesize("resume.pdf"));
fclose($file);
// 绑定参数并发送数据
$stmt->bind_param("b", $resumeData);
$resumeData = $data;
$stmt->send_long_data(1, $resumeData);
// 执行预处理语句
$stmt->execute();
// 检查是否成功插入数据
if ($stmt->affected_rows > 0) {
echo "简历插入成功!";
} else {
echo "插入失败!";
}
// 关闭连接
$stmt->close();
$mysqli->close();
在上面的示例中,我们首先打开并读取了要插入的简历文件,然后将数据绑定到预处理语句中的参数上。接下来,使用send_long_data()函数将数据发送到服务器。最后,执行预处理语句并检查是否成功插入数据。
请注意,send_long_data()函数必须在bind_param()函数之后调用,并且必须在execute()函数之前调用。另外,如果要发送多个参数的大量数据,可以多次调用send_long_data()函数,每次发送一个参数的数据。