PHP mySQL 代码将额外的行发送到数据库?

标签 php mysql sql database forms

第二次编辑 似乎在加载页面时,而不是在提交时,这两个条目(空白行)被添加到我的数据库中。我真的很难在这里找到我的问题,但我感觉这是一个相当愚蠢的错误。

我的 php/mysql 代码在发布额外的空白行及其应该发布的内容时遇到问题。用于验证我的表单中的数据并将信息传输到数据库的代码如下。每次我在表单中输入数据并提交时,它都工作正常,但是它会向 tblLocation 添加额外的行,tblWhere 工作正常。有人能引导我走向正确的方向吗?如果您需要更多我的代码,请告诉我。

代码如下

if (isset($_POST['butSubmit'])) {

// set variables to data from form    
$user= mysql_real_escape_string($_POST["txtUser"]);
$fName= mysql_real_escape_string($_POST["txtFname"]);
$lName= mysql_real_escape_string($_POST["txtLname"]);
$email= mysql_real_escape_string($_POST["txtEmail"]);
$date= date(DATE_RFC822);
$street= mysql_real_escape_string($_POST["txtStreet"]);
$city= mysql_real_escape_string($_POST["txtCity"]);
$state= mysql_real_escape_string($_POST["lstStates"]);
$zip= mysql_real_escape_string($_POST["txtZip"]);

    //handle html characters
$user = htmlentities($user, ENT_QUOTES);
$fName = htmlentities($fName, ENT_QUOTES);
$lName = htmlentities($lName, ENT_QUOTES);
$email = htmlentities($email, ENT_QUOTES);
$date = htmlentities($date, ENT_QUOTES);
$street = htmlentities($street, ENT_QUOTES);
$city = htmlentities($city, ENT_QUOTES);
$state = htmlentities($state, ENT_QUOTES);
$zip = htmlentities($zip, ENT_QUOTES);
$errorMsg=array();


// initiate testing procedures for form contents 
if($user==""){
    $errorMsg[]="Please enter your Username";
} else {
    $valid = verifyAlphaNum ($user); /* test for non-valid  data */
    if (!$valid){ 
        $error_msg[]="Username must contain only letters (A-Z), numbers (0-9), spaces, dashes(-), and apostrophes (').";
    }
}

if($fName==""){
    $errorMsg[]="Please enter your First Name";
} else {
    $valid = verifyAlphaNum ($fName); /* test for non-valid  data */
    if (!$valid){ 
        $error_msg[]="First Name must contain only letters (A-Z), numbers (0-9), spaces, dashes(-), and apostrophes (').";
    }
}

    if($lName==""){
    $errorMsg[]="Please enter your Last Name";
} else {
    $valid = verifyAlphaNum ($lName); /* test for non-valid  data */
    if (!$valid){ 
        $error_msg[]="Last Name must contain only letters (A-Z), numbers (0-9), spaces, dashes(-), and apostrophes (').";
    }
}

if($email==""){
    $errorMsg[]="Please enter your Email Address";
} elseif (!verifyEmail($email)){
    $errorMsg[]="Correct eMail format is ( <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="e18499808c918d84a1808f9892889584cf828e8c" rel="noreferrer noopener nofollow">[email protected]</a> )";
}

    if($street==""){
    $errorMsg[]="Please enter your Street Address";
} else {
    $valid = verifyAlphaNum ($street); /* test for non-valid  data */
    if (!$valid){ 
        $error_msg[]="Street Address must contain only letters (A-Z), numbers (0-9), spaces, dashes(-), and apostrophes (').";
    }
}

    if($city==""){
    $errorMsg[]="Please enter a City";
} else {
    $valid = verifyAlphaNum ($city); /* test for non-valid  data */
    if (!$valid){ 
        $error_msg[]="City must contain only letters (A-Z), numbers (0-9), spaces, dashes(-), and apostrophes (').";
    }
}

    if($state==""){
    $errorMsg[]="Please choose a State";
} else {
    $valid = verifyAlphaNum ($state); /* test for non-valid  data */
    }
}

    if($errorMsg){
    echo "<ul>\n";
    foreach($errorMsg as $err){
        echo "<li style='color: #ff6666'>" . $err . "</li>\n";
    }
    echo "</ul>\n";
} else { 

                 mysql_query("INSERT INTO tblWhere (pk_Username, fldFirstName, fldLastName, fldAdminLevel, fldTotalPosts, fldDateJoined, fldEmail) VALUES ('$user', '$fName', '$lName', '4', '0', '$date', '$email')");
                                if (mysql_errno()) {
                            echo $sql . "<br/>\n" . mysql_error();
                                }

                    mysql_query("INSERT INTO tblLocation (fk_Username, fldStreet, fldCity, fldState, fldZip) VALUES ('$user', '$street', '$city', '$state', '$zip')");
                                if (mysql_errno()) {
                            echo $sql . "<br/>\n" . mysql_error();
                                }
}
mysql_close();
print $user;

编辑 这是完整的代码,也许这会有帮助?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head>

<title>CS148 "Where Are You From?" Page</title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="author" content="Stephen B. Wakita" />

<meta name='description' content='Form to gather information for CS148 PHP Form Assignment. The     javascript functions for validation are from Easy! Designs, LLC easydesigns.net and few by Robert Erickson.'/>

<link rel="stylesheet"
  href="mystyle.css"
  type="text/css"
  media="screen" />

<script src="validation.js" type="text/javascript"></script>    

<script type="text/javascript">
<!--
window.onload = Initialize;

function Initialize(){
  if (!document.getElementById || !document.createElement || !document.createTextNode)
    return;

  var objForm = document.getElementById('frmRegister');
  objForm.onsubmit= function(){return fblnVerified(this);};
}

function reSetForm(){
    document.getElementById('txtFname').style.background='#fff';
    document.getElementById('txtLname').style.background='#fff';
    document.getElementById('txtEmail').style.background='#fff';    
    document.getElementById('lstStates').style.background='#fff';
    document.getElementById('errors').innerHTML="";
}

function fblnVerified(theForm){
        reSetForm();
        returnStatus = true;
      errorMsg = "";
        numErrors = 0;


    if (isEmpty(theForm.txtFname.value)) {
        document.getElementById('txtFname').style.background='#FF6';
        errorMsg += "<li>Please enter your first name.</li>";
        numErrors += 1;
        returnStatus = false;
    }

    if (isEmpty(theForm.txtLname.value)) {
        document.getElementById('txtLname').style.background='#FF6';
        errorMsg += "<li>Please Enter your last name.</li>";
        numErrors += 1;
        returnStatus = false;
    } else if (!isWithinRange(theForm.txtLname.value.length, 2, 45)){
        document.getElementById('txtLname').style.background='#FF6';
        errorMsg += "<li>Last name must contain at least two characters.</li>";
        numErrors += 1;
        returnStatus = false;
    }

    if (isEmpty(theForm.txtEmail.value)) {
        document.getElementById('txtEmail').style.background='#FF6';
        errorMsg += "<li>Please enter your email address.</li>";
        numErrors += 1;
        returnStatus = false;
    }else if (!isEmailAddress(theForm.txtEmail.value)){
        document.getElementById('txtEmail').style.background='#FF6';
        errorMsg += "<li>You have entered your email in an invalid format, please use this format: <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="e98c91888499858ca98c91888499858cc7919191" rel="noreferrer noopener nofollow">[email protected]</a> </li>";
        numErrors += 1;     
        returnStatus = false;
    }

    if(returnStatus == false){
        msg1 = "Your form is incomplete or incorrect. There are " + numErrors + " errors. ";
        msg1 += "Please look for the highlighted items.";
        msg = "<p>" + msg1 + "</p><ol class='missing' id='errorMessages'></ol>";
        document.getElementById('errors').innerHTML = msg;

        document.getElementById('errorMessages').innerHTML= errorMsg;
        alert(msg1);
        window.scrollTo(0,0);
    }
    return returnStatus;
}
-->
</script>
</head>
<body class="bodycolor">
<div id="content">
<div id="errors">
</div>

<form action="form.php" 
        method="post"
        id="frmWhere">


<fieldset class="wrapper">
<legend>Where are you from?</legend>
<p>Please answer the following survey. Required fields are marked in <span    class="required">red</span>.</p>

<fieldset class="intro">
<legend>Please complete the following survey.</legend>

<fieldset class="main">
<legend>Contact Information</legend>                    
<fieldset class="info"> 

    <label for="txtUser" class="required">Username</label>
  <input type="text" id="txtUser" name="txtUser" value="" tabindex="260"
            size="30" maxlength="26" onfocus="this.select()" />

    <label for="txtFname" class="required">First Name</label>
  <input type="text" id="txtFname" name="txtFname" value="" tabindex="261"
            size="55" maxlength="45" onfocus="this.select()" />


    <label for="txtLname" class="required">Last Name</label>
  <input type="text" id="txtLname" name="txtLname" value="" tabindex="262"
            size="55" maxlength="45" onfocus="this.select()" />


    <label for="txtEmail" class="required">Email</label>
  <input type="text" id="txtEmail" name="txtEmail" value="" tabindex="263"
            size="55" maxlength="45" onfocus="this.select()" />

  <label for="txtstreet" class="required">Street Address</label>
  <input type="text" id="txtStreet" name="txtStreet" value="" tabindex="264"
            size="55" maxlength="45" onfocus="this.select()" />

    <label for="txtCity" class="required">City</label>
  <input type="text" id="txtCity" name="txtCity" value="" tabindex="265"
            size="55" maxlength="45" onfocus="this.select()" />

    <select id="lstStates" name="lstStates" tabindex="266" size="1">
<option value="ZZ">None</option>
<option value="">-- UNITED STATES --</option>
<option value="AL">Alabama</option>
<option value="AK">Alaska</option>
<option value="AZ">Arizona</option>
<option value="AR">Arkansas</option>
<option value="CA">California</option>
<option value="CO">Colorado</option>
<option value="CT">Connecticut</option>
<option value="DE">Delaware</option>
<option value="FL">Florida</option>
<option value="GA">Georgia</option>
<option value="HI">Hawaii</option>
<option value="ID">Idaho</option>
<option value="IL">Illinois</option>
<option value="IN">Indiana</option>
<option value="IA">Iowa</option>
<option value="KS">Kansas</option>
<option value="KY">Kentucky</option>
<option value="LA">Louisiana</option>
<option value="ME">Maine</option>
<option value="MD">Maryland</option>
<option value="MA">Massachusetts</option>
<option value="MI">Michigan</option>
<option value="MN">Minnesota</option>
<option value="MS">Mississippi</option>
<option value="MO">Missouri</option>
<option value="MT">Montana</option>
<option value="NE">Nebraska</option>
<option value="NV">Nevada</option>
<option value="NH">New Hampshire</option>
<option value="NJ">New Jersey</option>
<option value="NM">New Mexico</option>
<option value="NY">New York</option>
<option value="NC">North Carolina</option>
<option value="ND">North Dakota</option>
<option value="OH">Ohio</option>
<option value="OK">Oklahoma</option>
<option value="OR">Oregon</option>
<option value="PA">Pennsylvania</option>
<option value="RI">Rhode Island</option>
<option value="SC">South Carolina</option>
<option value="SD">South Dakota</option>
<option value="TN">Tennessee</option>
<option value="TX">Texas</option>
<option value="UT">Utah</option>
<option value="VT">Vermont</option>
<option value="VA">Virginia</option>
<option value="WA">Washington</option>
<option value="DC">Washington, DC</option>
<option value="WV">West Virginia</option>
<option value="WI">Wisconsin</option>
<option value="WY">Wyoming</option>

<option value="">-- CANADA --</option>
<option value="AB">Alberta</option>
<option value="BC">British Columbia</option>
<option value="MB">Manitoba</option>
<option value="NB">New Brunswick</option>
<option value="NF">Newfoundland and Labrador</option>
<option value="NT">Northwest Territories</option>
<option value="NS">Nova Scotia</option>
<option value="NU">Nunavut</option>
<option value="ON">Ontario</option>
<option value="PE">Prince Edward Island</option>
<option value="PQ">Quebec</option>
<option value="SK">Saskatchewan</option>
<option value="YT">Yukon Territory</option>
<option value="">-- OTHER --</option>
<option value="OT">Other</option>
    </select>

<label for="txtZip" class="required">ZIP Code</label>
  <input type="text" id="txtZip" name="txtZip" value="" tabindex="267"
            size="6" maxlength="6" onfocus="this.select()" />       


<fieldset class="buttons">
<legend></legend>               
<input type="submit" id="butSubmit" name="butSubmit" value="Submit" 
            tabindex="991" class="button"/>

<input type="reset" id="butReset" name="butReset" value="Reset Form" 
            tabindex="993" class="button" onclick="reSetForm()" />
</fieldset>                 

</fieldset>
</fieldset>
</fieldset>
</form>
</?php

include ("validation_functions.php");

date_default_timezone_set('UTC');

$dbh=mysql_connect('webdb.uvm.edu','swakita','password');

if (!$dbh)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db('SWAKITA', $dbh);



if (isset($_POST['butSubmit'])) {

    //handle html characters
$user = htmlentities($user, ENT_QUOTES);
$fName = htmlentities($fName, ENT_QUOTES);
$lName = htmlentities($lName, ENT_QUOTES);
$email = htmlentities($email, ENT_QUOTES);
$date = htmlentities($date, ENT_QUOTES);
$street = htmlentities($street, ENT_QUOTES);
$city = htmlentities($city, ENT_QUOTES);
$state = htmlentities($state, ENT_QUOTES);
$zip = htmlentities($zip, ENT_QUOTES);
$errorMsg=array();

// set variables to data from form    
$user= mysql_real_escape_string($_POST["txtUser"]);
$fName= mysql_real_escape_string($_POST["txtFname"]);
$lName= mysql_real_escape_string($_POST["txtLname"]);
$email= mysql_real_escape_string($_POST["txtEmail"]);
$date= date(DATE_RFC822);
$street= mysql_real_escape_string($_POST["txtStreet"]);
$city= mysql_real_escape_string($_POST["txtCity"]);
$state= mysql_real_escape_string($_POST["lstStates"]);
$zip= mysql_real_escape_string($_POST["txtZip"]);



// initiate testing procedures for form contents 
if($user==""){
    $errorMsg[]="Please enter your Username";
} else {
    $valid = verifyAlphaNum ($user); /* test for non-valid  data */
    if (!$valid){ 
        $error_msg[]="Username must contain only letters (A-Z), numbers (0-9), spaces, dashes(-), and apostrophes (').";
    }
}

if($fName==""){
    $errorMsg[]="Please enter your First Name";
} else {
    $valid = verifyAlphaNum ($fName); /* test for non-valid  data */
    if (!$valid){ 
        $error_msg[]="First Name must contain only letters (A-Z), numbers (0-9), spaces, dashes(-), and apostrophes (').";
    }
}

    if($lName==""){
    $errorMsg[]="Please enter your Last Name";
} else {
    $valid = verifyAlphaNum ($lName); /* test for non-valid  data */
    if (!$valid){ 
        $error_msg[]="Last Name must contain only letters (A-Z), numbers (0-9), spaces, dashes(-), and apostrophes (').";
    }
}

if($email==""){
    $errorMsg[]="Please enter your Email Address";
} elseif (!verifyEmail($email)){
    $errorMsg[]="Correct eMail format is ( <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="87e2ffe6eaf7ebe2c7e6e9fef4eef3e2a9e4e8ea" rel="noreferrer noopener nofollow">[email protected]</a> )";
}

    if($street==""){
    $errorMsg[]="Please enter your Street Address";
} else {
    $valid = verifyAlphaNum ($street); /* test for non-valid  data */
    if (!$valid){ 
        $error_msg[]="Street Address must contain only letters (A-Z), numbers (0-9), spaces, dashes(-), and apostrophes (').";
    }
}

    if($city==""){
    $errorMsg[]="Please enter a City";
} else {
    $valid = verifyAlphaNum ($city); /* test for non-valid  data */
    if (!$valid){ 
        $error_msg[]="City must contain only letters (A-Z), numbers (0-9), spaces, dashes(-), and apostrophes (').";
    }
}

    if($state==""){
    $errorMsg[]="Please choose a State";
} else {
    $valid = verifyAlphaNum ($state); /* test for non-valid  data */
    }
}

    if($errorMsg){
    echo "<ul>\n";
    foreach($errorMsg as $err){
        echo "<li style='color: #ff6666'>" . $err . "</li>\n";
    }
    echo "</ul>\n";
} else { 

                 mysql_query("INSERT INTO tblWhere (pk_Username, fldFirstName, fldLastName, fldAdminLevel, fldTotalPosts, fldDateJoined, fldEmail) VALUES ('$user', '$fName', '$lName', '4', '0', '$date', '$email')");
                                if (mysql_errno()) {
                            echo $sql . "<br/>\n" . mysql_error();
                                }

                    mysql_query("INSERT INTO tblLocation (fk_Username, fldStreet, fldCity, fldState, fldZip) VALUES ('$user', '$street', '$city', '$state', '$zip')");
                                if (mysql_errno()) {
                            echo $sql . "<br/>\n" . mysql_error();
                                }
}
mysql_close();
print $user;

?>
</body>
</html>

最佳答案

您的代码在 POST 检查之外运行 mysql 查询,无论如何都会运行 mysql 查询,因为 $errorMsg 未返回。

将 mysql 逻辑移至代码的 if (isset($_POST['butSubmit'])) { 部分。

<?php

include ("validation_functions.php");

date_default_timezone_set('UTC');

$dbh=mysql_connect('webdb.uvm.edu','swakita','password');

if (!$dbh)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db('SWAKITA', $dbh);



if (isset($_POST['butSubmit'])) {

    //handle html characters
$user = htmlentities($user, ENT_QUOTES);
$fName = htmlentities($fName, ENT_QUOTES);
$lName = htmlentities($lName, ENT_QUOTES);
$email = htmlentities($email, ENT_QUOTES);
$date = htmlentities($date, ENT_QUOTES);
$street = htmlentities($street, ENT_QUOTES);
$city = htmlentities($city, ENT_QUOTES);
$state = htmlentities($state, ENT_QUOTES);
$zip = htmlentities($zip, ENT_QUOTES);
$errorMsg=array();

// set variables to data from form    
$user= mysql_real_escape_string($_POST["txtUser"]);
$fName= mysql_real_escape_string($_POST["txtFname"]);
$lName= mysql_real_escape_string($_POST["txtLname"]);
$email= mysql_real_escape_string($_POST["txtEmail"]);
$date= date(DATE_RFC822);
$street= mysql_real_escape_string($_POST["txtStreet"]);
$city= mysql_real_escape_string($_POST["txtCity"]);
$state= mysql_real_escape_string($_POST["lstStates"]);
$zip= mysql_real_escape_string($_POST["txtZip"]);



// initiate testing procedures for form contents 
if($user==""){
    $errorMsg[]="Please enter your Username";
} else {
    $valid = verifyAlphaNum ($user); /* test for non-valid  data */
    if (!$valid){ 
        $error_msg[]="Username must contain only letters (A-Z), numbers (0-9), spaces, dashes(-), and apostrophes (').";
    }
}

if($fName==""){
    $errorMsg[]="Please enter your First Name";
} else {
    $valid = verifyAlphaNum ($fName); /* test for non-valid  data */
    if (!$valid){ 
        $error_msg[]="First Name must contain only letters (A-Z), numbers (0-9), spaces, dashes(-), and apostrophes (').";
    }
}

    if($lName==""){
    $errorMsg[]="Please enter your Last Name";
} else {
    $valid = verifyAlphaNum ($lName); /* test for non-valid  data */
    if (!$valid){ 
        $error_msg[]="Last Name must contain only letters (A-Z), numbers (0-9), spaces, dashes(-), and apostrophes (').";
    }
}

if($email==""){
    $errorMsg[]="Please enter your Email Address";
} elseif (!verifyEmail($email)){
    $errorMsg[]="Correct eMail format is ( <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="284d50494558444d684946515b415c4d064b4745" rel="noreferrer noopener nofollow">[email protected]</a> )";
}

    if($street==""){
    $errorMsg[]="Please enter your Street Address";
} else {
    $valid = verifyAlphaNum ($street); /* test for non-valid  data */
    if (!$valid){ 
        $error_msg[]="Street Address must contain only letters (A-Z), numbers (0-9), spaces, dashes(-), and apostrophes (').";
    }
}

    if($city==""){
    $errorMsg[]="Please enter a City";
} else {
    $valid = verifyAlphaNum ($city); /* test for non-valid  data */
    if (!$valid){ 
        $error_msg[]="City must contain only letters (A-Z), numbers (0-9), spaces, dashes(-), and apostrophes (').";
    }
}

    if($state==""){
    $errorMsg[]="Please choose a State";
} else {
    $valid = verifyAlphaNum ($state); /* test for non-valid  data */
    }


    if($errorMsg){
    echo "<ul>\n";
    foreach($errorMsg as $err){
        echo "<li style='color: #ff6666'>" . $err . "</li>\n";
    }
    echo "</ul>\n";
} else { 

                 mysql_query("INSERT INTO tblWhere (pk_Username, fldFirstName, fldLastName, fldAdminLevel, fldTotalPosts, fldDateJoined, fldEmail) VALUES ('$user', '$fName', '$lName', '4', '0', '$date', '$email')");
                                if (mysql_errno()) {
                            echo $sql . "<br/>\n" . mysql_error();
                                }

                    mysql_query("INSERT INTO tblLocation (fk_Username, fldStreet, fldCity, fldState, fldZip) VALUES ('$user', '$street', '$city', '$state', '$zip')");
                                if (mysql_errno()) {
                            echo $sql . "<br/>\n" . mysql_error();
                                }
    }
}
mysql_close();
print $user;

?>
</body>
</html>

关于PHP mySQL 代码将额外的行发送到数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9607369/

相关文章:

php - 在 PHP 和 MySQL 中为联系表单创建 SQL 脚本

php - 两个表值匹配等于一个值

mysql - 在存储过程中使用游标的语法错误

mysql - 合并多个查询

php - Wordpress 子主题激活并破坏了网站,如何解决?

php - 我怎样才能平均分割一组数字

mysql - 来自现有数据库的 seed_fu

javascript - Localhost 返回 "Undefined"而不是唯一 ID

mysql - 每个用户 ID 的唯一产品 ID 的更新率

sql - 引导为PK低性能