验证检查3个字段以检查重复

时间:2016-09-28 11:32:17

标签: php sql

我是php的新手但是正在尝试学习新东西。我在数据库中有一个包含三个字段的表。 id,城市和名称。我想要的是通过从文本框中获取值来检查所有这三个字段是否相等,然后显示错误,否则它将显示重定向到新页面的链接。但是我无法正确地运行这个查询,尝试了几个像count等。

<form>
<input id="text1" type="text" name="id" size="20" > 
<input id="text1" type="text" name="name" size="20" > 
<input id="text1" type="text" name="city" size="20" > 
<input id="text1" type="submit" name="submit" size="20" > 
</form>

<?php
$con=mysqli_connect("localhost","root","","test");
$check="SELECT * FROM eval WHERE id = '$_POST[id]' AND name = '$_POST[name]'  AND city = '$_POST[city]' ";

if( if all this data is same then ) {
echo "Record already exist...<br/>";
}
else
{
echo "<a href='NewUser.php'> New Sign Up </a>
}
?>

2 个答案:

答案 0 :(得分:1)

<form>
    <input id="text1" type="text" name="id" size="20" >
    <input id="text1" type="text" name="name" size="20" >
    <input id="text1" type="text" name="city" size="20" >
    <input id="text1" type="submit" name="submit" size="20" >
</form>

<?php
    $con=mysqli_connect("localhost","root","","test");
    $check="SELECT COUNT(*) FROM eval WHERE id = '$_POST[id]' AND name =  '$_POST[name]'  AND city = '$_POST[city]' ";
    $result = mysqli_query($con,$check);
    $count = mysqli_fetch_array($result);
    if(current($count) > 0) {
        echo "Record already exist...<br/>";
    }
    else
    {
        echo "<a href='NewUser.php'> New Sign Up </a>
    }
?>

您必须使用SQLmysqli_query()查询发送到数据库。然后检查行数是否大于0,这意味着您找到了一个或多个精确重复的行。

SELECT COUNT(*)自动计算检索到的行。

答案 1 :(得分:1)

好的,所以你有一个HTML表单和一些PHP代码来处理表单提交时发生的事情。

因此,在提交表单时,为了让PHP注册此提交,需要知道表单已提交。

如果您通过JavaScript处理表单输入,那么您的表单在客户端可能会运行良好,但在PHP中它有点不同。

所以你的表格需要另外两件事:

1。)方法属性,指定如何发送表单数据。

2。)定义表单数据将发送到的位置的操作。

最常见的方法是GET和POST。并且当你有PHP代码处理与表单在同一页面上的表单时,操作将是页面本身。所以你现在有:

<form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
  <input type="text" name="id">
  <input type="text" name="name">
  <input type="text" name="city">
  <input type="submit" name="clicked" value="formSubmit">
</form>

在PHP中,为了注册此输入,您可以使用单击“提交”按钮时发生的事件。所以你将拥有:

<?php
  # If the submit button was clicked
  if (isset($_POST['clicked']) && $_POST['clicked'] == 'formSubmit') {
    # Access the form inputs in php
    $id = $_POST['id'];
    $name = $_POST['name'];
    $city = $_POST['city'];

    # Helper to output mysql errors
    function processError($link)  {
      echo "Error: Unable to connect to MySQL.<br>";
      echo "Debugging errno: " . $link->errno . "<br>";
      echo "Debugging error: " . $link->error . "<br>";
      exit;
    }

    # Connect to the database
    // Create a database connection for PHP to use
    $link = mysqli_connect($DBHost, $DBUser, $DBPass, $DBName);
    // Ensure the connection is active
    if (!$link) {
      echo "Error: Unable to connect to MySQL.<br>";
      echo "Debugging errno: " . mysqli_connect_errno() . "<br>";
      echo "Debugging error: " . mysqli_connect_error() . "<br>";
      exit;
    }
    // Sets encoding type to uft8
    if (!mysqli_set_charset($link, 'utf8')) { processError($link); }

    # Do query
    // Build query
    $query = 'SELECT `id` ';
    $query .= 'FROM `eval` ';
    $query .= 'WHERE `id` = ? ';
    $query .= 'AND `name` = ? ';
    $query .= 'AND `city` = ? ';
    $query .= 'LIMIT 1 ';
    // Prepare the statement
    if (!$stmt = $link->prepare($query)) { processError($link); }
    // Bind in form values to prevent sql injection
    if (!$stmt->bind_param('iss', $id, $name, $city)) { processError($link); }
    // Execute the query
    if (!$stmt->execute()) { processError($link); }
    // Store the result
    $stmt->store_result();
    // Store the number of rows returned
    $num_rows = $stmt->num_rows;
    // Close the statement
    $stmt->close();

    # Check if the record exists
    if ($num_rows == 1) {
      echo 'Record already exist...<br/>';
    }
    // No record exists
    else {
      echo '<a href="NewUser.php"> New Sign Up </a>';
    }
  }
?>

希望能帮到你: - )