2016-09-17 86 views
1

有两个php文件包含表单,另一个包含将表单数据插入数据库表中的代码。数据未提交到数据库并显示“错误”消息

这是从第一个文件

<form name="form" action="insert_dataE.php" onSubmit="return 
validation()" method="post" id="formServiceEntry"> 
    <fieldset id="fieldSetServiceEntry"> 
    <legend align="center">Please fill the form</legend> 
    <p class="FieldHeading"><i>Vehicle No(*): </i></p> 
    <input id="VehicleNoFieldArea" type="text" name="VehicleNoField" 
size="6" maxlength="8"/> 
    <p class="FieldHeading"><i>Description(*):</i></p> 
    <textarea id="descriptionFieldArea" name="descriptionField" 
rows="2" cols="20" size="15" maxlength="18"></textarea> 
    <p class="FieldHeading"><i>Total(*):</i></p> 
    <input id="totalFieldArea" name="totalField" type="text" 
size="4" maxlength="4"/> 
    <p id="amountFieldHeading"><i>Bill(*):</i></p> 
    <input id="amountFieldArea" name="amountField" type="text" 
size="3" maxlength="3" onKeyUp="balance();" /> 
    <br/> 
    <div id="divisionRadioButton"> 
     <h3 id="radioButtonHeading">Service(*):</h3> 
     Service &nbsp; 
     <input class="textFields" type="radio" 
name="serviceSelection" value="service" checked /> 
     <br/> 
     Wash &nbsp; 
     <input class="textFields" type="radio" 
name="serviceSelection" value="wash" /> 
    </div> 
    <p id="balanceFieldHeading"><i>Balance(*):</i></p> 
    <input id="balanceFieldArea" name="balanceField" type="text" 
size="4" maxlength="4"/> 
    </fieldset> 
    <input class="btnsSE" type="submit" name="Button" value="Submit" /> 
    <input class="btnsSE" type="reset" name="Button" value="Reset Form"/> 
    <input type="button" class="btnsSE" value="Back to the staff 
interface" onClick="window.location='staffE.php';"/> 
</form> 

这是第二个文件

<?php 
// Connects to your Database 
$conn=mysql_connect("localhost", "webgeek1_service", "6defyu4642070") or 
die(mysql_error()); 
mysql_select_db("webgeek1_software_order", $conn) or die(mysql_error()); 
$result = mysql_query("SELECT * FROM application", $conn); 
$num_rows = mysql_num_rows($result); 
$num_rows = $num_rows + 1; 
$id= $num_rows; 
$dateAndTime = date('y-m-d H:i:s',time()); 
$vehicleNo=mysql_real_escape_string($_POST['VehicleNoField']); 
$description=mysql_real_escape_string($_POST['descriptionField']); 
$amount=mysql_real_escape_string($_POST['amountField']); 
$service=mysql_real_escape_string($_POST['serviceSelection']); 
// Build an sql statment to add the query details 
$sql="INSERT INTO `webgeek1_software_order`.`application`(`serialNo`, 
`dateAndTime` , `vehicleNo` , `description` ,`amount`,`service`) 
VALUES 
('$id',  
'$dateAndTime','$vehicleNo','$description','$amount','$service')"; 
$result = mysql_query($sql, $conn); 
if($result) 
{ 
    echo "<p id='headingInsertData'>Service Station Web Application</p>"; 
    echo "<p id='receiptHeading'>Receipt</p>"; 
    echo "<div id='mainFieldsInsertData'>"; 
    echo "Serial No: " . " " . $id; 
    echo "<br/>"; 
    echo "Date and Time: " . " " . $dateAndTime; 
    echo "<br/>"; 
    echo "Vehicle No: " . " " . $vehicleNo; 
    echo "<br/>"; 
    echo "Description: " . " " . $description; 
    echo "<br/>"; 
    echo "Amount: " . " " . $amount; 
    echo "<br/>"; 
    echo "Service:" . " " . $service; 
    echo "<br/>"; 
    echo "<br/>"; 
    echo"Thanks for using our services"; 
    echo "</div>"; 
    echo "<div id='footerInsertData'>"; 
    echo "<i>Developed by: Web Geeks - Information Technology (IT) 
    Company</i>"; 
    echo "</div>"; 
    echo "<div align='center'>"; 
    echo "<input class='btns' type='button' value='Print' 
    onClick='javascript: window.print();'/>"; 
    echo "<input type='button' class='btns' value='Back to the 
    Application' onClick='newDoc()'/>"; 
    echo "</div>"; 
} 
else 
{ 
    echo "ERROR"; 
} 
// close connection 
mysql_close($conn); 
?> 
+0

请提供您的问题和错误代码全部细节。也使用mysqli作为mysql贬损 – rak007

+0

我试过mysqli以及问题依然存在。问题很简单。我的数据未提交 –

+0

是整个PHP代码?或只是其中的一部分?如果($ result)条件结果为假,则为 –

回答

1

您遇到的错误的插入数据的代码提交表单代码(Duplicate entry '51' for key 'PRIMARY')似乎非常合乎逻辑因为你正在给你指定的ID行而不是自动写入。此外,您正在使用基于当前行数量的ID。这导致了ID重复的MySQL错误。

要解决此问题:

  1. 修改serialNo柱和A_I列(AUTO_INCREMENT)勾选复选框。这将确保您始终拥有独特的ID

  2. 完全删除该部分在代码:

$result = mysql_query("SELECT * FROM application", $conn); $num_rows = mysql_num_rows($result); $num_rows = $num_rows + 1; $id= $num_rows;

  • 修改查询:
  • 这是已经修改

    $sql="INSERT INTO `webgeek1_software_order`.`application` (`dateAndTime`, `vehicleNo`, `description`,`amount`, `service`) VALUES('$dateAndTime', '$vehicleNo', '$description', '$amount', '$service')"; 
    

    我相信数据库应该能够在插入新数据后自动设置下一个ID。这样可以避免因为您不再插入自己的号码而导致身份证复制等错误。

    旁注(但很重要):你应该使用mysqliPDO statements因为mysql扩展已被弃用(和甚至在PHP 7.0.0删除)。

    +0

    非常感谢Edvin,我也在想,因此,我实现了这些目标,并且工作。特别是对于命令:“mysql_error($ conn)”非常感谢。这个命令解决了这个问题,因为它给了我们什么错误的想法 –

    +0

    @ user3119917我很高兴帮助!如果可以,请考虑upvoting /接受我的答案,因为它确实帮助我很多(接受答案也会给你+2声望)。祝你好运! –

    0

    在phpmyadmin的结构为我的表,我需要设置列“的SerialNo”到AI(自动增量),并在该插入数据代码,我需要评论的行:

    $num_rows = mysql_num_rows($result); 
    $num_rows = $num_rows + 1; 
    $id= $num_rows; 
    

    类似地,我需要从插入查询中删除同一个文件中的'serialNo'。最后,我需要评论的线路:

    echo "Serial No: " . " " . $id; 
    echo "<br/>"; 
    

    在插入数据代码

    相关问题