Php 从SQL获取数据并对照表单进行检查

Php 从SQL获取数据并对照表单进行检查,php,sql,mysqli,Php,Sql,Mysqli,如何从SQL表中的一列中获取所有数据,并将其与从表单中获取的数据进行核对?以下是我目前掌握的情况: <?php $con=mysqli_connect("www.tqbtest.comlu.com","a5349216","Password","a5349216_test"); if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); }

如何从SQL表中的一列中获取所有数据,并将其与从表单中获取的数据进行核对?以下是我目前掌握的情况:

<?php
 $con=mysqli_connect("www.tqbtest.comlu.com","a5349216","Password","a5349216_test");
 if (mysqli_connect_errno())
   {
   echo "Failed to connect to MySQL: " . mysqli_connect_error();
   }

 //How do I check the data from the form to make sure there is no username/email already used?

 $sql="INSERT INTO Profiles (firstName, lastName, username, email, password, region, profileGroup, verified)
 VALUES
 ('$_POST[firstname]','$_POST[lastname]','$_POST[age]')";

 if (!mysqli_query($con,$sql))
   {
   die('Error: ' . mysqli_error($con));
   }
 echo "1 record added";

 mysqli_close($con);


?>

您有几个选项:

  • 您可以向希望唯一的任何字段添加唯一索引。它们将导致任何违反唯一性约束的插入失败,然后您可以捕获并反馈给应用程序
  • 您可以尝试对表中希望唯一的字段进行选择,并查看是否返回结果。如果您这样做了,您可以将错误返回给您的用户
      我认为这就是您需要的:

      $DBsql = mysql_query("select col1, col2 from table_name where some_id = $some_id");
      $sql = mysql_fetch_array($DBsql);
      
      if(($_POST['field1'] == $sql['col1']) && ($_POST['field2'] == $sql['col2'])) {
          echo 'The fields are valid';
      } else {
          echo 'One or more fields are not valid';
      }
      

      上述线程的可能重复解释了MySQL的问题和解决方案,尽管它不是特定于PHP的。实际上,我会选择两种解决方案:使字段唯一以防止双重注册,但也使插入更智能,以便在记录已经存在时不插入任何内容。然后,您可以获取记录的编号,以查看是否插入了记录。如果不是,你可以假设它已经存在。我知道这听起来像是一个破记录在这里,但请阅读SQL注入,并考虑从MySQLI切换到PDO,所以在我的表中,我有主键,它只能有没有重复的名字。那么它本身会抛出一个错误吗?如果会,我该如何捕获该错误?@TheQuantumBros,而不是die语句,插入错误处理逻辑我应该在some_id=$some_id下面放什么?