簡體   English   中英

PHP從多維數組准備了插入語句

[英]PHP prepared insert statement from multidimensional array

更新的代碼:

if (isset($_POST['submit'])) {

/* Create a prepared statement */

$query = "INSERT INTO log_dates(week_date, crew_chief, monday_crew) values(?,?,?)";

$stmt = mysqli_prepare($connection, $query);


  $returnedData = $_POST['data'];

  foreach($returnedData as $data) {
    $week_date = $data['week_date'];
    $crew_chief = $data['crew_chief'];
    $monday_crew = $data['monday_crew'];
    $stmt->execute();
  }


 mysqli_stmt_bind_param($stmt, 'sss', $week_date, $crew_chief, $monday_crew);

/* Execute it */
 mysqli_stmt_execute($stmt);


/* Close statement */
 mysqli_stmt_close($stmt);

 } // end if

這是我的POST數組的樣子:

Array ( [0] => Array ( [week_date] => 2013-07-08 - 2013-07-14 ) [1] => Array ( [crew_chief] => Alan ) [2] => Array ( [monday_crew] => dd ) )

那不是綁定參數的方式。 您正在將多個參數拍打成單個值。 綁定調用應為

mysqli_stmt_bind_param($stmt, 'ss', $foo, $bar);
                               ^^--two params
                                    ^^^^^^^^^^---two values


foreach($returnedData as $data) {
   $bar = $data['crew_chief'];
   $foo = $data['week_date'];
   $stmt->execute();
}

一旦綁定了變量,簡單地為它們分配新值將導致語句上的下一個-> execute()調用選擇這些新值。

我有個主意 您需要對正在做的事情有個想法。

首先,您需要開發一個要針對SQL Server運行的純SQL查詢。 沒有准備好的語句,沒有mysqli,沒有PHP。 干凈的SQL。

現在,SQL是您的問題,而不是將其發送到服務器的API。 最后,逐步開發所需的程序。 這是一個粗略的清單:

  1. 首先,必須設計一個數據庫來存儲您的數據。
  2. 完成此操作后,您需要確定哪種查詢可滿足插入目的。
  3. 然后手動編寫此查詢,並確保它在控制台中有效
  4. 下一步將是確定此查詢所需的數據
  5. 那么您必須驗證所擁有的數據並確定其是否適合(4)
  6. 如果不是,則-您需要格式化現有數據以使其符合(4)中的要求
  7. 有了它,您就可以開始編寫一個PHP程序,該程序使用字符串串聯動態創建查詢,並回顯結果。
  8. 那么您必須像在(3)中那樣在控制台中測試此動態構建的查詢
  9. 如果可行,請使用占位符替換查詢中的變量,然后使用mysqli准備的語句和一組數據運行該查詢。 請注意,使用本機准備的語句時,占位符只能單獨表示一個數據文字。
  10. 完成此操作之后,您可能最終可以開始研究如何為具有多個值的准備好的語句提供數據了。

您可以從上面的任何階段尋求幫助,但必須遵循列表。 看來您要索要尚未完成第一個項目的最后一個項目。

希望能幫助到你。

暫無
暫無

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

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