3

我正在尝试使用表单帖子向 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'?

4

4 回答 4

2

您可以通过在 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 ;
于 2012-09-19T08:02:41.787 回答
1

不,那是资源链接,您必须获取数据:

<?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 />";
?>
于 2012-09-19T08:03:19.403 回答
1

避免重复的最佳方法是将QuoteIDas AUTO_INCREMENTedPRIMARY KEY

CREATE TABLE sourcingQuote
(
    QuoteID INT AUTO_INCREMENT,
    -- other columns,
    CONSTRAINT t_pk PRIMARY KEY (QuoteID)
)
于 2012-09-19T08:04:21.720 回答
0

您可以在 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;
于 2012-09-19T08:06:11.800 回答