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()函數,每次發送一個參數的數據。