简单邮件列表在SQL中添加空白表行


Simple Mail List adding blank table row in SQL

我有一个简单的邮件列表,当它只是一个电子邮件地址时,我可以使用它,但我决定添加一个名称列,并且无法弄清楚出了什么问题。

当用户提交表单时,电子邮件地址将添加到电子邮件列中,但在名称列中只是空白。此外,它每次都会添加新的空白表行。

这是表单的代码。

<form id="addressForm" action="index.php" method="get">
    <p>
      <input class="formname" type="text" name="name" id="name" value="Your Name" onfocus="this.value = this.value=='Your Name'?'':this.value;" onblur="this.value = this.value==''?'Your Name':this.value;">
      <input class="formemail" type="text" name="address" id="address" value="Your E-mail" onfocus="this.value = this.value=='Your E-mail'?'':this.value;" onblur="this.value = this.value==''?'Your E-mail':this.value;">
      <input class="formsubmit" type="submit" value="Sign Up" />
    </p>
    <p id="response"><?php echo(storeAddress()); ?></p>
</form>

这是php...

    <?
require_once("dbConstants.php");
function storeAddress() {
  $message = "&nbsp;";
  // Check for an email address in the query string
  if( !isset($_GET['address']) ){
    // No email address provided
  }
  else {
    // Get details from the query string
    $name = $_GET['name'];
    $address = $_GET['address'];
    // Validate Address
    if(!preg_match("/^[_a-z0-9-]+('.[_a-z0-9-]+)*@[a-z0-9-]+('.[a-z0-9-]+)*$/i", $address)) {
      $message = "<strong>Error</strong>: An invalid email address was provided.";
    }
    else {
      // Connect to database
      $con = mysql_connect(DBHOST ,DBUSER, DBPASS);
      mysql_select_db(DBNAME, $con);
      // Insert email address into mailinglist table 
      $result = mysql_query("INSERT INTO mailinglist SET name='" . $name . "'");
      $result = mysql_query("INSERT INTO mailinglist SET email='" . $address . "'");
      if(mysql_error()){
        $message = "<strong>Error</strong>: There was an error storing your email address.";
      }
      else {
        $message = "Thanks for signing up!";
      }
    }
  }
  return $message;
}
?>

将新行添加到phpmyadmin中时,我使用了SQL查询

ALTER TABLE mailinglist ADD column_name name;

任何人都可以指出创建额外行的代码有什么问题吗?

您将在

数据库中插入两行。第一个带有姓名,第二个带有电子邮件地址。您应该在一个查询中插入这些值,如下所示:

mysql_query("INSERT INTO mailinglist(name, email) VALUES('" . $name . "','" . $address . "')");

您还应该检查$_GET['name']中是否有某些内容,因为您的问题表明它是空的(插入了空行)。

作为旁注,我想补充一点,PHP 中已弃用mysql_*函数。您应该切换到 mysqliPDO .