【问题标题】:Incremental Primary key in mySQL table with PHP使用 PHP 的 mySQL 表中的增量主键
【发布时间】:2012-09-11 12:34:00
【问题描述】:

我正在尝试使用表单帖子向 mySQL 表添加行。每行都有一个我称为quoteID 的主。提交新表单时,它应该将自身添加为表中的一行,并且 quoteID 比之前的 quoteID 大一。它目前看起来像这样:

<?
session_start();
if(!session_is_registered(myusername)){
header("location:login.php");
}
include 'verify.php';
$con = mysql_connect("localhost","user","$password");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("internal", $con);

$previousOrderID = mysql_query("SELECT * FROM sourcingQuote ORDER BY quoteID DESC LIMIT 1"); 
$newOrderID = $previousOrderID + 1;

mysql_close($con);
?>

目前此表中有 4 行,quoteID 为 1、2、3 和 4。奇怪的是,如果我尝试:

<? echo $previousOrderID; ?><br>
<? echo $newOrderID; ?><br>

输出结果为:

Resource id #3

4

无论表中有多少行,$previousOrderID 都固定为 3。如何更正此问题?更何况,当我添加它时它是正确的,但为什么它首先输出'Resource id #3'?

【问题讨论】:

    标签: php mysql sql select increment


    【解决方案1】:

    您可以通过在 phpmyadmin 中选择自动增量来做到这一点

    或者通过sql示例,表名是demo,冒号是demo,带有自动增量和它的主键

    CREATE TABLE IF NOT EXISTS `demo` (
      `demmo` int(11) NOT NULL AUTO_INCREMENT,
      PRIMARY KEY (`demmo`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
    

    【讨论】:

    • 这不是AI 他试图增加资源链接!
    • 非常非常有帮助。我立即这样做了。
    【解决方案2】:

    避免重复的最佳方法是将QuoteID 设置为AUTO_INCREMENTed PRIMARY KEY

    CREATE TABLE sourcingQuote
    (
        QuoteID INT AUTO_INCREMENT,
        -- other columns,
        CONSTRAINT t_pk PRIMARY KEY (QuoteID)
    )
    

    【讨论】:

    • 这不是AI 他试图增加资源链接!
    【解决方案3】:

    不,那是资源链接,你要获取数据:

    <?php
        $previousOrder = mysql_query("SELECT * FROM `sourcingQuote` ORDER BY `quoteID` DESC LIMIT 1"); 
        $previousOrder = mysql_fetch_assoc($previousOrder);
        $previousOrderID = $previousOrder['quoteID'];
        $newOrderID = $previousOrderID + 1;
    
        echo $previousOrderID."<br />";
        echo $newOrderID."<br />";
    ?>
    

    【讨论】:

    • 其实现在返回的是:1个数组
    • 更新了代码,因为我发现 quoteID 是您的自动增量 ID。经测试,有效。它以前也有效,您只需将 drom ID 更改为 quoteID
    【解决方案4】:

    您可以在 mysql phpmyadmin 中将 'quoteID' 作为自动增量.....

    你得到了资源 id #3.. 因为你正在打印资源链接.. 您可以通过

    打印数据
    $previousOrderID = mysql_query("SELECT * FROM sourcingQuote ORDER BY quoteID DESC LIMIT 1"); 
    $previousOrderID = mysql_fetch_assoc($previousOrderID);
    $newOrderID = $previousOrderID['ID'] + 1;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-11
      • 2012-12-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多