如何检查数据库中已有的名字并给出错误消息

How can i check firstname already in the database and give a error message?

本文关键字:消息 错误 出错 何检查 检查 数据库      更新时间:2023-09-26

在这里我正在尝试提交表单。我想知道的是,当用户输入他的名字时,如果该名字已经在数据库中,我如何防止他提交表单并给出错误消息。它应该在他打字时检查名字。

这是我的代码

if(isset($_POST['btn-signup']))
{
$reqnum = $_POST['reqnum'];
$Mnumber = $_POST['Mnumber'];
$email = $_POST['email'];
$fname = $_POST['fname'];
$address = $_POST['address'];
$sitename = $_POST['sitename'];
$payment = $_POST['payment'];
    //if()
    //{
    $new_fname= $_POST['fname'];
    $xxx = mysql_query("SELECT fname FROM gotest WHERE fname = '$new_fname'")or die(mysql_error());
    $yyy = mysql_fetch_row($xxx);
    if(mysql_num_rows($xxx) > 0)
    {
        $query = mysql_query("INSERT INTO gotest(Mnumber,email,fname,address,sitename,reqnum,payment) VALUES('$Mnumber','$email','$fname','$address','$sitename','$reqnum','$payment')");
        $r = mysql_insert_id();
        header("Location: http://uuuu.yyyyy.net/test/freecreate.php?rid=$r");
    }
    else
    {
        echo"error";
    }
}

这是我的表格

<!DOCTYPE>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>gooooooooo </title>
    <link rel="stylesheet" href="style.css" type="text/css"/>
    <link rel="stylesheet" type="text/css" href="demo/demo.css" >
    <link rel="stylesheet" href="demo/codemirror.css">
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
    <script src="js/jquery.validate.min.js"></script>
    <script src="js/additional-methods.min.js"></script>
    <!--<script src="script.js"></script>-->
    <script type="text/javascript">
        function copyText() {
            src = document.getElementById("fname");
            dest = document.getElementById("sitename");
            dest.value = src.value;
        }

    </script>
</head>
<body>
<div class="wrapper">
    <header>
        <img src="images/logo.png" width="200" align="center" id="logo" style="text-align: center" />
    </header>
    <div id="login-form" style="margin-top: 5px !important;">
        <form action="" method="post">
            <table align="middle"  border="0" style="margin: 0 auto; background: rgba(57, 134, 79, 0.64);" >
                <h1 align="middle" style="color: #fff">Create Your Web Site</h1></br></br>

                <tr>
                    <td><input type="text" id="Mnumber" name="Mnumber" value=""  placeholder="Your Mobile Number" required /></td>
                </tr>
                <tr>
                    <td><input type="email" id="email" name="email"  value=""  placeholder="Your Email" required /></td>
                </tr>
                <tr>
                    <td><input type="text" id="fname" name="fname"   value=""   placeholder="Your First Name" onkeyup="copyText()"  required /></td>
                </tr>
                <tr>
                    <td><input type="text" id="address" name="address" value=""  placeholder="Your Address" required /></td>
                </tr>
                <tr>
                    <td><input type="text" id="sitename" name="sitename" value=""  placeholder="Your Site name" readonly/></td>
                </tr>

                <tr>
                    <td><button type="submit" id="btn-signup" name="btn-signup" style="background: #39864f; border: 1px solid #fff; cursor: hand">Create website</button></td>
                </tr>
            </table>
        </form>
        <script>

</script>
    </div>
    <footer>
        <p  style="text-align: center;"><a href="#" style="color: #fff">Powered By <img src="images/elogo.png" align="center" id="logo" style="text-align: center; height: 40px; width: 153px;padding-bottom: 10px;" /></a></p>
    </footer>
    </div>
    </body>
    </html>

您只需要更改条件,因为 mysql_num_rows() 返回查询从数据库中获取的行数。您的查询用于选择包含new_fname的行数。如果具有该名称的记录可用,这将返回 1。

所以你需要检查mysql_num_rows($xxx)>0,然后回显错误,否则你的工作。

if(mysql_num_rows($xxx) > 0)
{
   echo"error"; 
}
else
{
   $query = mysql_query("INSERT INTO gotest(Mnumber,email,fname,address,sitename,reqnum,payment) VALUES('$Mnumber','$email','$fname','$address','$sitename','$reqnum','$payment')");
    $r = mysql_insert_id();
    header("Location: http://uuuu.yyyyy.net/test/freecreate.php?rid=$r");
 }  

使用 AJAX - 阻止用户提交表单。

您可以通过 ajax 进行检查,如下所示

您需要附加 jquery 库才能使用 jquery 函数

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#btn-signup").attr('disabled', true); // This will disable submit button.
  $("#fname").keyup(function(){
     var fname = $(this).val();
     $.ajax({
          url: "check_name.php",
          type: "POST",
          data: {fname : fname }
          success: function(response){
              if(response=="ok")
              {
                 $("#btn-signup").attr('disabled', false); // Enable submit button.
              }
              else
              {
                alert("Fname is already exist.");
                $("#btn-signup").attr('disabled', true);
              }
          }
     });
  })
})
</script>

用于检查名称的 php 脚本是否已存在

check_name.php

<?php
    $new_fname= $_POST['fname'];
    $xxx = mysql_query("SELECT fname FROM gotest WHERE fname = '$new_fname'")or die(mysql_error());
    $yyy = mysql_fetch_row($xxx);
    if(mysql_num_rows($xxx) > 0)
    {
       echo "exist";
    }
    else
    {
       echo "ok";
    }
?>