0

メールアドレスだけだったときに使っていた単純なメールリストがありますが、名前の列を追加することにしましたが、何が問題なのかわかりません。

ユーザーがフォームを送信すると、電子メール アドレスが電子メール列に追加されますが、名前列は空白になります。また、毎回新しい空白のテーブル行を追加しています。

これがフォームのコードです....

<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;

余分な行を作成するコードの何が問題なのか、誰か指摘できますか?

4

1 に答える 1

3

データベースに 2 つの行を挿入しています。1 通目は名前、2 通目はメール アドレスです。次のように、これらの値を 1 つのクエリに挿入する必要があります。

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

$_GET['name']質問が空であることを示しているため(空の行が挿入されているため)、何か入っているかどうかも確認する必要があります。

mysql_*補足として、 PHP では関数が非推奨であることを付け加えたいと思います。mysqliまたはに切り替える必要がありPDOます。

于 2013-10-24T10:18:19.453 に答える