PHP / MySQL-重複データをチェックし、空の値を挿入しないようにします
PHPMySQLを学んでいます。 mysqlの日付ベースに電子メールと国名を挿入するためのHTMLフォームを作成します。私は成功します。しかし、いくつかの問題があります。重複データをチェックして、空のデータの挿入を防ぐにはどうすればよいですか?
これが私のHTMLコードです
<form action="add_entry.php" method="post" name="myForm" onsubmit="return validateEmail();">
<input type="email" name="email" class="email" required="required">
<input type="text" name="country">
<input type="submit" class="button" value="Continue" onclick="this.disabled=true; this.value='Loading...';" disabled>
</form>
<script type='text/javascript' src='http://code.jquery.com/jquery-1.8.3.js'></script>
<script type="text/javascript">
function validateEmail()
{
var x=document.forms["myForm"]["email"].value;
var atpos=x.indexOf("@");
var dotpos=x.lastIndexOf(".");
if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
{
alert("Not a valid e-mail address");
return false;
}
}
</script>
<script>
$("form > *").change(function() {
var fields = $("form input").not("input[type='submit']");
var filledFields = fields.filter(function() {
return $(this).val().length > 0;
});
if (filledFields.length == fields.length) {
$("input[type='submit']").removeAttr("disabled");
} else {
$("input[type='submit']").attr("disabled", "disabled");
}
});
</script>
ここにadd_entry.phpコード
があります <?php
$con = mysql_connect("localhost","dbusername","dbpassword");
if (!$con) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db("dbname", $con);
$sql="INSERT INTO dbtablename (id,email, country) VALUES (null,'$_POST[email]','$_POST[country]')";
?>
<?php if (!mysql_query($sql,$con)) : ?>
die('Error: ' . mysql_error());
<?php else : ?>
<center>Success!</center>
<meta http-equiv="refresh" content="0; url=http://mywebsite.com/content.html" />
<?php endif; ?>
<?php
mysql_close($con)
?>
add_entry.phpに両方のコードを記述していることがわかりません...重複を確認して空のデータコードを挿入しないようにしてください..
StackOverFlowのmysqlデータベースに重複データが入力されないようにすると空のデータがデータベースに挿入されないようにするの両方のコードを取得しました。 「重複データコードの防止」で誰かがSQLインジェクタブルだったと言っているのがわかります。
コードは
$query = mysqli_query($con, "SELECT * FROM emails WHERE email='".$email."'");
if(mysqli_num_rows($query) > 0){
echo "email already exists";
}else{
$sql="INSERT INTO emails (email) VALUES ('".$_POST[email]."')";
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
}
今、私を助けてください、どうすればこの問題を解決できますか..
これが必要です。誰かが空のデータを挿入しようとしたり、 add_entry.php ページに直接アクセスしようとすると、フォームページに自動的にリダイレクトされます...可能であれば警告が表示されます "続行するにはメールを作成する必要があります。」
重複するメールが見つかった場合、データベースは挿入されず、自動的に content.htmlページにリダイレクトされます。
データの挿入に成功すると、彼は自動的に content.htmlページをリダイレクトします。
専門家がこのコードを書くのを手伝ってくれれば、それは彼の素晴らしさです。誰かがphp/mysqlを実際に学ぶのを手伝ってくれることを願っています。私もやってみますが、勉強を続けるにはあなたの助けが必要です。私はあなたのような専門家になりたいし、他の人を助けたいと思っています。私が学ぶのを手伝ってください。どうもありがとうございました。
答え :
解決策:
このコードが機能するか試してみてください
<?php
$con = mysql_connect("localhost","dbusername","dbpassword");
if (!$con) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db("dbname", $con);
$email=$_POST['email'];
$country=$_POST['country'];
$query = mysql_query("SELECT * FROM emails WHERE email='".$email."'",$con);
if(mysql_num_rows($query)==0){
$sql=mysql_query("INSERT INTO dbtablename (email, country) VALUES ('$email','$country')",$con)die('Error: ' . mysql_error());
}else{
echo "email already exists";
}
mysql_close($con)
?>
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。