MYsql - 获取插入ID - sql

时间:2016-01-23 17:23:07

标签: mysql sql

我想执行一个查询,将插入ID插入其中一个列

我想知道如何获取插入ID 我读到了这个答案Get inserted id from mysql insert procedure 但它讨论了如何在查询后获取插入ID,并且我想在查询时获取它

我尝试做:

    $stmt = $db->prepare("INSERT INTO `files` (`name`, `fname`) VALUES (?, LAST_INSERT_ID() + ?)") or die($db->error);
    $stmt->bind_param('ss', $name, $uniqid);

但它的剂量工作,我总是得到56,也是我需要做的事情吗?

2 个答案:

答案 0 :(得分:0)

插入后保存它会更简单,更好。在实际插入发生之前,您也不太可能获得正确的id。

最可靠的方法是使用交易。

  • 开始交易
  • 插入行
  • 更新插入ID
  • 提交交易

答案 1 :(得分:0)

CONCAT(string1, string2, ...)不是MySQL中的字符串连接运算符。使用LAST_INSERT_ID()

在有线协议中,mysql在每个查询之后向客户端返回与$last_id = $db->insert_id; 相同的值,主动提供,并且大多数库提供了访问最近返回的值的方法。你没有提到,但看起来你在php中使用mysqli,所以你正在寻找这个:

<!-- <form action="<?php// echo base_url();?>LoginController/Register" method='get'> -->
<?php echo form_open(base_url('LoginController/Register'),['method'=>'post'])?>
          <p><span id="sprytextfield1">
            <label for="tn">Full Name</label>
            <input class="form-control" input type="text" name="full_name" placeholder="Please Enter Your Full Name" style="width:50%" ><?php echo form_error('full_name'); ?>
            <span class="textfieldRequiredMsg"> </span></span> <span id="sprytextfield2">
            <label for="tjt">Designation  <?php echo form_error('des'); ?><br>
              <br>
              <input type="radio" name="des" value="pm">
            Project Manager                     
            <input type="radio" name="des" value="ceo">
            CEO<br>
            <input type="radio" name="des" value="dev">
            Devoloper                       </label>
            </span></p>
          <p><span>                 <span class="textfieldRequiredMsg"></span></span> <span id="sprytextfield3">
          <label for="te">Email</label>
            <input class="form-control" input type="text" name="email" placeholder="Please Enter Your Email" style="width:50%" ><?php echo form_error('email'); ?>
            <span class="textfieldRequiredMsg"></span></span> <span id="sprytextfield4">
              <label for="tc">Company</label>
              <input class="form-control" input type="text" name="company" placeholder="Please Enter Your Company Name" style="width:50%" ><?php echo form_error('company'); ?>
              <span class="textfieldRequiredMsg"></span></span> <span id="sprytextfield5">
            <label for="tun">User Name</label>
            <input class="form-control" input type="text" name="user_name" placeholder="Please Enter Your User Name" style="width:50%" ><?php echo form_error('user_name'); ?>
            <span id="sprytextfield6">
              <label for="tpw">Password</label>
              <input class="form-control" input type="password" name="password" placeholder="Please Enter Your Password" style="width:50%" ><?php echo form_error('password'); ?>
              <span class="textfieldRequiredMsg"></span></span> <span id="sprytextfield7">
                <label for="tpw2"> Confirm Password</label>
                <input class="form-control" input type="password" name="cpassword" placeholder="Please Re Enter Your Password" style="width:50%" ><?php echo form_error('cpassword'); ?>
                <span class="textfieldRequiredMsg"></span></span>                 </p>
          <table width="385"  cellspacing="50px">
            <tr>
              <th width="75"><button type="submit" class="btn btn-lg btn-primary">Create Account</button></a>
            </th>
              <th width="154"> <input name="Reset" type="reset" class="btn btn-lg btn-primary" >
            </th>
          </tr>
        </table>
          <p>&nbsp;</p>
        </form>

看起来好像是要发送第二个查询来向数据库询问id,但它不是。它返回先前存储的值。

http://php.net/manual/en/mysqli.insert-id.php