簡體   English   中英

上傳 php mysql - 批量上傳和批量插入

[英]uploadify php mysql - bulk upload and bulk insert

我正在使用 uploadify 將圖片上傳到服務器。 后端我正在使用 PHP 腳本。 在 PHP 腳本中,除了復制到目標位置之外,我還在數據庫中插入文件位置和一些其他詳細信息。

問題:-如果我上傳 20 個文件,PHP 腳本被調用 20 次,數據庫插入語句被調用 20 次以插入不同的圖像。 絕對調用數據庫 20 次是低效的方法。 有什么方法可以保存文件名(和位置)並只調用一次插入語句(最后)一次插入所有 20 條記錄?

謝謝你的幫助

問候

基蘭

我為此推薦的一種方法是通過mysqli擴展使用准備好的語句。 引用主要優勢:

在 sql 中使用准備好的語句的實際目的是降低處理查詢的成本; 不要將數據與查詢分開。 這就是它現在與 php 一起使用的方式,而不是它最初的設計方式。 使用 SQL,您可以通過使用准備好的語句降低執行多個類似查詢的成本。這樣做會減少解析、驗證,並且通常會預先為所述查詢生成執行計划。 這就是為什么它們在循環中運行得比它們的 IMMEDIATE Query 表親更快的原因。

來源: http://us2.php.net/manual/en/mysqli.prepare.php#103730

舉例說明如何利用它:

$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

if ($stmt = $mysqli->prepare("INSERT INTO `images` (`location`, `size`, `othervalues`) VALUES(?, ?, ?)")) {
  foreach($images as $image) {
    // s = string value
    // i = integer value
    $stmt->bind_param("sis", $image['location'], $image['size'], $image['othervalues']);
    $stmt->execute();
  }
  $stmt->close();
}
// Your prepared statement failed, handle the error
else {
}

$mysqli->close();

我建議閱讀mysqli::preparemysqli_stmt::bind_param以獲取有關該過程如何工作的更多信息。 我還建議閱讀MySQL 文檔中的准備好的語句

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM