创建SQL行后,在PHP bind_result方法中获取有关该行的数据

时间:2015-12-10 21:39:34

标签: php mysqli

我有一个将数据插入SQL表的函数。

public function process_form(){
    # Start function when submit button is clicked
    if (isset($_POST['submit'])) {
      # Assign form data
      $host = $_SESSION['logged_user'];
      $game = str_replace('g','',$_POST['game']);
      $region = str_replace('r','',$_POST['region']);
      $name = $_POST['match-name'];
      $mode = str_replace('mode_0','',$_POST['mode']);
      $bid = $_POST['bid'];
      # SQL query
      $q = '
        INSERT INTO matches(
          match_id,
          host,
          game,
          region,
          match_name,
          match_mode,
          started,
          start_time,
          finished,
          finish_time,
          validated,
          team_a,
          team_b,
          bid
        )
        VALUES (
          null,
          ?,
          ?,
          ?,
          ?,
          ?,
          0,
          null,
          0,
          null,
          0,
          null,
          null,
          ?
        );
      ';
      # Process SQL
      if ($stmt = $this->db->prepare($q)) {
        $stmt->bind_param('iiisii',$host,$game,$region,$name,$mode,$bid);
        $stmt->bind_result()
        $stmt->execute(VARIABLE_GOES_HERE);
        $stmt->close();
      }
    }
  }#endfunc(process_form)

使用action属性收集所需数据的表单,将用户重定向到显示插入数据的下一页。

<form method="POST" action="match.php?id=VARIABLE_GOES_HERE">

我想在$ q中扩展我的SQL查询,这将为我提供当前创建的行的ID,然后在$ stmt-&gt; bind_result()填充变量中使用id。然后将在表单元素的action属性中添加。

1 个答案:

答案 0 :(得分:1)

需要添加以下代码行:$last_id = $stmt->insert_id;

  if ($stmt = $this->db->prepare($q)) {
        $stmt->bind_param('iiisii',$host,$game,$region,$name,$mode,$bid);
        $stmt->execute();
        $last_id = $stmt->insert_id;
        $stmt->close();

然后形成这个:

<form method="POST" action="match.php?id='.$last_id.'">