【发布时间】: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();
}
?>
关于为什么它不想存储多个用户订单具有相同名字的任何想法?以及我如何能够解决这个问题?
存储在数据库中的信息: Info store in database
我在mysql中运行Describe命令输出
【问题讨论】:
-
您的
firstname列上似乎有唯一键或主键约束。你能显示DESCRIBE orders的输出吗? -
不知道现有数据和表结构是无法回答的
-
不要将
username,firstname, lastname,放在订单表中。userid就够了 -
添加了存储在数据库中的表结构和信息。
-
但是有更好的方法来做到这一点