そのため、実験中のページでフォームを実行しています。Atm 入力は 1 つだけで、それは電子メールです。基本的には登録が必要で、同じメールを再度追加しようとするとエラーメッセージが返され、それ以外の場合は追加されます。
だから、これは私が投稿しているコードです:
<?php
$username="user";
$password="pass";
$database="test";
$email = mysql_real_escape_string( $_POST['email'] );
mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
$query = "SELECT * FROM enroll WHERE email='$email' ";
$result = mysql_query($query) or die(mysql_error());
if (mysql_num_rows($result) ) {
print 'user is already in table';
}
else {
$query = "INSERT INTO enroll VALUES ('','$email')";
$result = mysql_query($query) or die(mysql_error());
print 'user added';
}
?>
それはうまくいきます!既に存在するメールを追加すると、「ユーザーは既にテーブルにいます」と表示され、そうでない場合は「ユーザーが追加されました」と表示されます。
問題は、入力を検証する別のphpスクリプトを実行する前に、送信時にそれをDBに追加したことです。送信を押す前でも、常に「ユーザーは既にテーブルにいます」と表示されるようになりました。
このようなことをしたいのですが、投稿するとまったく機能せず、何が問題なのかわかりません。
<?php
//If the form is submitted
if(isset($_POST['submit'])) {
// Required field names
$required = array('email');
// Loop over field names, make sure each one exists and is not empty
$error = false;
foreach($required as $field) {
if (empty($_POST[$field])) {
$error = true;
}
}
if ($error) {
echo 'You forgot to fill in your email';
} else {
$username="user";
$password="pass";
$database="test";
$email = mysqli_real_escape_string( $_POST['email'] );
mysqli_connect(localhost,$username,$password);
mysqli_select_db($database) or die( "Unable to select database");
$query = "SELECT * FROM enroll WHERE email='$email' ";
$result = mysqli_query($query) or die(mysqli_error());
if (mysqli_num_rows($result) ) {
print 'user is already in table';
}
else {
$query = "INSERT INTO enroll VALUES ('','$email')";
$result = mysqli_query($query) or die(mysqli_error());
print 'user added';
}
}
}
?>
私の世界では、これは電子メールが提供されているかどうかを確認し、データベースに存在するかどうかを確認し、存在しない場合は追加します。存在する場合は、エラーが返されます。
私は何を間違っていますか?
EDIT2:@ExpertSystemこれは、あなたの推奨に従って私が今行っているコードです:
<?php
if(isset($_POST['submit'])) {
// Required field names
$required = array('email');
// Loop over field names, make sure each one exists and is not empty
$error = false;
foreach($required as $field) {
if (empty($_POST[$field])) {
$error = true;
}
}
if ($error) {
echo 'You forgot to fill in your email';
} else {
$username="root";
$password="root";
$host="localhost";
$database="test";
$email = mysqli_real_escape_string( $_POST['email'] );
$link = mysqli_connect(localhost, $username, $password);
mysqli_select_db($link, $database) or die("Unable to select database");
$query = "SELECT * FROM enroll WHERE email='$email'";
$result = mysqli_query($link, $query) or die(mysqli_error($link));
if (mysqli_num_rows($result) ) {
print 'user is already in table';
}
else {
$query = "INSERT INTO enroll (email) VALUES ('$email')";
$result = mysqli_query($link, $query) or die(mysqli_error($link));
print 'user added';
}
}
}
?>