mysqli_stmt::send_long_data()函式用於向預處理語句中的繫結引數傳送大量資料。它主要用於傳送BLOB或TEXT型別的資料,因為這些型別的資料在記憶體中可能會佔用大量空間。
語法: bool mysqli_stmt::send_long_data(int $param_nr, string $data)
引數:
- $param_nr:引數的索引號,從1開始。
- $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()函式,每次傳送一個引數的資料。
熱門工具排行榜