【问题标题】:Issue Storing Multiple orders in mysql with same first name问题在具有相同名字的mysql中存储多个订单
【发布时间】:2018-01-29 18:38:54
【问题描述】:

我试图将它放在来自同一用户的多个订单中,但是当我去创建另一个与另一个订单具有相同名字的订单时,它会出现错误,但是如果您将名字更改为像 admin1 这样的管理员,只有当它有两个不同的名称时,它才会将订单存储在 MySQL 中:

这是错误:

错误:INSERT INTO 订单(用户 ID、用户名、名字、姓氏、订单日期、地址、电子邮件、轮胎、机油、火花、detailkit、total、tordered、电话号码、storeid)值('101'、'bigfella'、' admin', '' ,'18:27, 2018 年 1 月 29 日', '', '', '', '','', '' , '0', '0', '','选择... ') 键“名称”的重复条目“管理员”

这是 Order.php 表单

 <form action="process.php" method="post"> 
  <div class="form-row">
    <div class="form-group col-md-6">
      <label class="cblack" for="firstname">First Name:</label>
      <input type="text" class="form-control" id="firstname" name="firstname" placeholder="First Name">
    </div>
     <div class="form-group col-md-6">
      <label class="cblack" for="lastname">Last Name:</label>
      <input type="text" class="form-control" id="lastname" name="lastname" placeholder=" Last Name">
    </div>

    <div class="form-group col-md-6">
      <label class="cblack" for="email">Email Address:</label>
      <input type="email" class="form-control" id="email" name="email" placeholder="Email Address">
    </div>
      <div class="form-group col-md-6">
      <label class="cblack" for="phonenumber">Phone Number:</label>
      <input type="text" class="form-control" id="phonenumber" name="phonenumber" placeholder="503-555-0000">
    </div>
  </div>
  <div class="form-group">
    <label class="cblack" for="address">Shipping Address:</label>
    <input type="text" class="form-control" id="address" name="address" placeholder="455 Your Address Here ">
  </div>

  <div class="form-row">
    <div class="form-group col-md-2">
      <label class="cblack" for="tires">Tires:</label>

      <input type="text" class="form-control" name="tireqty" id="tires" placeholder="0">
    </div>

    <div class="form-group col-md-2">
      <label class="cblack" for="oil">Oil:</label>
      <input type="text" class="form-control"  name="oilqty" id="oil" placeholder="0">
    </div>

    <div class="form-group col-md-2">
      <label class="cblack" for="sparks">Spark Plugs:</label>
      <input type="text" class="form-control" name="sparkqty" id="sparks"  placeholder="0">
   </div>

    <div class="form-group col-md-2">
      <label class="cblack" for="detailkit">Detailing Kits:</label>
      <input type="text" class="form-control" name="detailkit" id="detailkit" placeholder="0">   
   </div>
  </div>
    </div>
 <button type="submit" id="submit" name="submit" class="btn btn-primary">Submit Your Order.</button>
</form> 

Process.php(存储到数据库中)

 $phonenumber = $_POST['phonenumber'];
     $detailkit = $_POST['detailkit'];
     $firstname = $_POST['firstname'];
     $lastname = $_POST['lastname'];

      $totalqty = $tireqty + $oilqty + $sparkqty + $detailkit; 
      $totalamount = 0.00;

      define('TIREPRICE', 100);
      define('OILPRICE', 10);
      define('SPARKPRICE', 4);
      define('detailkit', 50);

      $totalamount = $tireqty * TIREPRICE
                   + $oilqty * OILPRICE
                   + $detailkit * detailkit
                   + $sparkqty * SPARKPRICE;
      $taxrate = 0.00;  // local sales tax is 10%
      $totalamount = $totalamount * (1 + $taxrate);

//Code Will Insert into database Table. 
$servername = "localhost";
$username = "xxxxxx";
$password = 'xxxxxx';
$dbname = "xxxx";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}


if (isset($_POST['submit'])) { //On Submit Run below code :) For Automotive and then insert into database - AB
    $address = $_POST['address'];
     $firstname = $_POST['firstname'];
        $lastname= $_POST['lastname'];
      $email = $_POST['email'];
        $tireqty = $_POST['tireqty'];
            $oilqty = $_POST['oilqty'];
                $sparkqty = $_POST['sparkqty'];
                    $total = $_POST['total'];
                          $phonenumber = $_POST['phonenumber'];
                                $detailkit = $_POST['detailkit'];
                                    $userid = $_SESSION['user']['id'];
                                        $username = $_SESSION['user']['username'];


$name = $_POST['storeaddress'];
foreach ($name as $storeid){ 

}
                                   $totalqty = $tireqty + $oilqty + $sparkqty + $detailkit; 
                        //$totalordered = $_POST['totalordered'];
    $sql = "INSERT INTO orders (userid,username,firstname, lastname, orderdate , address, email, tires, oil, sparks, detailkit, total, tordered, phonenumber, storeid)
                    VALUES ('$userid','$username','$firstname', '$lastname' ,'$date', '$address', '$email', '$tireqty', '$oilqty','$sparkqty', '$detailkit' , '$totalamount', '$totalqty', '$phonenumber','$storeid' )";



if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();
}

?>

关于为什么它不想存储多个用户订单具有相同名字的任何想法?以及我如何能够解决这个问题?

数据库:Heres the Database

存储在数据库中的信息: Info store in database

我在mysql中运行Describe命令输出

describe orders output

【问题讨论】:

  • 您的firstname 列上似乎有唯一键或主键约束。你能显示DESCRIBE orders的输出吗?
  • 不知道现有数据和表结构是无法回答的
  • 不要将username,firstname, lastname, 放在订单表中。 userid 就够了
  • 添加了存储在数据库中的表结构和信息。
  • 但是有更好的方法来做到这一点

标签: php mysql


【解决方案1】:

您似乎在 firstname 列上有一个带有UNIQUE 约束的索引。您必须删除索引,然后在没有唯一约束的情况下重新创建它,如下所示:

ALTER TABLE orders DROP INDEX `name`;
ALTER TABLE orders CREATE INDEX `name` ON customer(firstname);

【讨论】:

  • 他们为 UNIQUE 约束支付了额外费用。它实际上是一个功能。 (完全在开玩笑)
  • 这会阻止您拥有两个名字为“Bob”的客户,这可能不是一个解决方案。
  • 鲍勃二世不同意。
猜你喜欢
  • 1970-01-01
  • 2020-07-21
  • 2014-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-31
  • 2020-02-06
  • 2012-04-30
相关资源
最近更新 更多