【问题标题】:How can I detect just AUTO_INCREMENTed value with PHP? [duplicate]如何使用 PHP 仅检测 AUTO_INCREMENTed 值? [复制]
【发布时间】:2014-02-17 17:08:10
【问题描述】:

你好!

我想知道,刚刚在我的MySQL 表中为A_I 方法分配了什么值。我无法通过指定其他值来查找它,因为其中至少有两个可能是相同的。我真的被困住了。

假设我正在使用这个简单的代码来INSERT new VALUES

INSERT INTO my_table (`Auto_Incremented_Value`, `My_Column`) VALUES (NULL, '$my_value');

现在我需要知道Auto_Incremented_Value 列的最后一个值是什么,因为我必须使用这个值才能将它分配给另一个表作为指向该对象的链接。

实际上,我允许一些人在我的服务器上上传图片,这些图片与他们所属的一些产品相关联。我有两个表来处理这个问题。第一个(products 表)使用AUTO_INCREMENT 而第二个(images 表)没有,因为我在那里存储上传图像的完整路径,小描述和链接到指定的产品。我需要将Auto_Incremented_Value 作为链接存储在我的images 表中。

附:如果我能用 PHP 解决它,我会很高兴。

谢谢!

【问题讨论】:

    标签: php mysql sql auto-increment


    【解决方案1】:

    您应该为此使用MySQLI Insert ID

    $query = "INSERT INTO my_table (`Auto_Incremented_Value`, `My_Column`) VALUES (NULL, '$my_value')";
    $mysqli->query($query);
    
    printf ("New Record has id %d.\n", $mysqli->insert_id);
    

    【讨论】:

      【解决方案2】:

      如果您使用mysqli,您可以在执行查询后立即使用mysqli_insert_id() 检索自动递增的值:

      $result = mysqli_query($link, "Insert into someTable values (null, 'a','b','c')") or die(mysqli_error($link));
      
      $last_id = mysqli_insert_id($link);
      

      对于 PDO,您可以执行类似的操作并使用 PDO::lastInsertId 来检索值。

      【讨论】:

        【解决方案3】:

        如果您使用的是 PDO,您可以像这样获取新值:
        $nextAIValue = $pdo->lastInsertId();
        如果您使用的是 mySQLi,请使用:
        $nextAIValue = mysqli_insert_id();
        如果您使用的是普通的 mysql_* 函数(但已弃用),请获取如下值:
        $nextAIValue = mysql_insert_id();

        【讨论】:

        • 为什么建议针对已弃用库的解决方案/mysqli 呢?
        • 我已经编辑了我的答案。但是,如果您查看此处的 PHP 问题,您会注意到大量开发人员仍在使用mysql_*。悲伤但真实。所以我决定为 OP 提供这个解决方案,以防万一。
        猜你喜欢
        • 2014-04-10
        • 2013-06-06
        • 1970-01-01
        • 2014-01-20
        • 2011-01-01
        • 2010-11-13
        • 2014-04-29
        • 1970-01-01
        相关资源
        最近更新 更多