mysqli_stmt::send_long_data
(mysqli_stmt_send_long_data)ブロック単位でデータを送信します
mysqli_stmt :: send_long_data()関数は、プリプロセシングステートメントのバインディングパラメーターに大量のデータを送信するために使用されます。これらのタイプのデータがメモリに多くのスペースを占有する可能性があるため、主にBLOBまたはテキストタイプのデータを送信するために使用されます。
構文:bool mysqli_stmt :: send_long_data(int $ param_nr、string $ data)
パラメーター:
返品値:データが正常に送信された場合はtrueを返します。それ以外の場合はfalseを返します。
例: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()関数を複数回呼び出して、一度に1つのパラメーターのデータを送信できます。