3

フォーム投稿を使用してmySQLテーブルに行を追加しようとしています。各行には、quoteIDと呼んでいるプライマリがあります。新しいフォームが送信されると、それ自体がテーブルの行として追加され、quoteIDは前のquoteIDより1大きくなります。現在は次のようになっています。

<?
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に固定されています。これを修正するにはどうすればよいですか?もっとそう、私がそれに追加するとき、それは正しいです、しかしなぜそれはそもそも「リソースID#3」を出力するのですか?

4

4 に答える 4

2

phpmyadminで自動インクリメントを選択することでこれを行うことができます

ここに画像の説明を入力してください

またはSQLの例では、テーブル名はデモであり、コロンは自動インクリメントとそのプロマリーキーを使用したデモです。

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

重複を避けるためにできる最善の方法は、asedを設定するQuoteIDことAUTO_INCREMENTですPRIMARY KEY

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

mysqlphpmyadmin....で自動インクリメントとして「quoteID」を作成できます。

そして、uはリソースID#3を取得します。リソースリンクをpritingするためです。uは次の方法でデータを印刷できます。

$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 に答える