【问题标题】:Getting the ID of from table row I just inserted从我刚刚插入的表行中获取 ID
【发布时间】:2014-04-19 12:21:39
【问题描述】:

我有空闲的文本框 TP_ID、Deny、Level

当我输入拒绝和级别的值并单击提交时,它们将存储到数据库中,并且 TP_ID 是 Auto_Increment。

<form name="Permit" id="Permit" action="<?php echo JURI::current(); ?>" method="post">
        <input type="text" name="TPID" value=""> <br>
        <input type="text" name="Permit_or_Deny" value=""> <br>
        <input type="text" name="Level" value=""> <br>


        <p>input id="submit" name="submit" type="submit" value="save" /></p>

     </form>
<?php
    if( (isset($_POST['Permit_or_Deny'])) || (isset($_POST['Level']))|| (isset($_POST['TPID'])) ) 
        {

        $Permit_or_Deny = $_POST['Permit_or_Deny'];
        $Level= $_POST['Level'];
        $TPID= $_POST['TPID'];
        $db =& JFactory::getDBO();   
        $query = "INSERT INTO tp_newedit (TP_ID, Permit_or_Deny, Level) 
        VALUES ('".$TPID."','".$Permit_or_Deny."','".$Level."');";
        $db->setQuery( $query );
        $db->query();
        echo "<script>window.close();</script>";
        } else

    ?>

有什么方法可以检索最后创建的 ID 并将其显示在文本框中?

【问题讨论】:

  • 你在说这个$db->insertid();吗?
  • 请注意,在这种情况下,'stop/starts' ("./.") 是不必要的。
  • 如果您使用的是DBO,为什么不使用参数化查询?为什么要让自己容易受到注入攻击

标签: php mysql auto-increment


【解决方案1】:

您可以使用 MySQL LAST_INSERT_ID() 函数。这将返回给定会话的最后插入的 id。

这是一个例子:

mysql> INSERT INTO cities VALUES (NULL, 'Banglore','India',42789);
Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM cities;
+----+------------+---------+------------+
| id | city       | country | population |
+----+------------+---------+------------+
|  5 | Paris      | France  |   11836970 |
|  6 | Nantes     | France  |     283025 |
|  7 | London     | UK      |    7556900 |
|  8 | Manchester | UK      |     464200 |
|  9 | Hull       | UK      |     258700 |
| 11 | Banglore   | India   |      42789 |
+----+------------+---------+------------+
6 rows in set (0.00 sec)

mysql> SELECT LAST_INSERT_ID();
+------------------+
| LAST_INSERT_ID() |
+------------------+
|               11 |
+------------------+
1 row in set (0.00 sec)

【讨论】:

  • 谢谢,但是一旦我得到了 Last Id,我该如何将它插入到另一个表中?
【解决方案2】:

【讨论】:

    【解决方案3】:

    使用

    $db->insertid()
    

    见: http://docs.joomla.org/API17:JDatabase::insertid 了解更多信息。

    【讨论】:

    • 来源错误。不是insertid(),而是insert_id()
    • 您在哪里发现 OP 正在使用 Joomla?
    • $db =& JFactory::getDBO();
    • 谢谢大家曾经使用过 $db->insertid();如何将其存储到不同的表中?
    【解决方案4】:

    这行不通 $id = $db-&gt;insert_id;

    假设它正在使用 mysqli

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

    【讨论】:

      猜你喜欢
      • 2014-08-23
      • 2018-05-14
      • 1970-01-01
      • 2011-07-31
      • 2011-07-11
      • 2011-08-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多