0

更新代码:

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 ) )
4

2 回答 2

4

这不是你绑定参数的方式。您正在将多个参数拍成一个 SINGLE 值。绑定调用应该是

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() 调用来获取这些新值。

于 2013-07-08T21:12:06.270 回答
1

我有一个想法给你。你需要知道你在做什么。

首先,您需要开发一个要针对 SQL 服务器运行的纯 SQL 查询。没有准备好的语句,没有 mysqli,没有 PHP。一个干净的 SQL。

SQL 现在是您的问题,而不是 API 将其发送到服务器。然后最终一步一步地开发你需要的程序。这是一个粗略的清单:

  1. 首先,必须设计一个数据库来存储您的数据。
  2. 完成后,您需要考虑什么查询将用于插入目的。
  3. 然后手动编写此查询并确保它在控制台中工作
  4. 下一步是确定此查询需要哪些数据
  5. 那么您必须验证您拥有的数据并确定它是否适合 (4)
  6. 如果不是 - 您需要格式化现有数据以使其满足 (4) 中的要求
  7. 一旦你有了它,你就可以开始编写一个 PHP 程序来动态地创建你的查询,使用字符串连接,并回显结果。
  8. 那么您必须在控制台中测试这个动态构建的查询,就像在 (3) 中一样
  9. 如果可行 - 用占位符替换查询中的变量,并使用 mysqli 准备好的语句继续运行此查询,并使用一组数据。请注意,当使用本机预准备语句时,占位符只能表示单个数据文字。
  10. 完成后,您终于可以开始研究为准备好的语句提供多个值的问题了。

您可以从上面的任何阶段寻求帮助,但必须遵循列表。看来您要的是尚未完成第一项的最后一项。

希望能帮助到你。

于 2013-07-09T06:43:00.377 回答