0

我需要知道我是否可以在 php 脚本插入该表之前查询和检查数据库表数据?

我已经制作了一个带有 2 个字段并提交按钮(POST)的 html,并且我也可以毫无问题地将数据添加到数据库表并获取其结果,但是我有重复项,我不想拥有它......我想要脚本检查我的数据,输入数据,如果没有重复,则添加它。

请协助。

谢谢

代码

<?php


$con=mysqli_connect("localhost","root","Opera1","railway");


if(mysqli_connect_errno())
{
echo "Failed to connect to MySQL: ", mysqli_connect_error;
}

$data1 = $_POST['data1'];
$data2 = $_POST['data2'];



$sql="replace into pipe (data1, data2) 
values ('$data1','$data2')";



if(!mysqli_query($con,$sql))
{
die('Error : ' . mysqli_error($con));
}


echo "Record to Registraton added";

$result = mysqli_query($con,"SELECT * FROM pipe");

echo "<table border='1'>
<tr>
<th>Data1</th>
<th>Data2</th>
</tr>";

while($row = mysqli_fetch_array($result))
  {
 echo "<tr>";
  echo "<td>" . $row['data1'] . "</td>";
  echo "<td>" . $row['data2'] . "</td>";
  echo "</tr>";
  }
echo "</table><br><br>";


mysqli_close($con);


?>
4

3 回答 3

1
       <?php


    $con=mysqli_connect("localhost","root","Opera1","railway");


    if(mysqli_connect_errno())
    {
    echo "Failed to connect to MySQL: ", mysqli_connect_error;
    }

    $data1 = $_POST['data1'];
    $data2 = $_POST['data2'];

    $sql1="select * from pipe";
    $q1=mysql_query($con, $sql1);
    $t=0;
    while($row1=mysql_fetch_array($q1))
    {

    if($row1['data1']== '$data1' || $row1['data2']=='$data2')
    {
    $t=1;
    break;
    }
    }
    if($t==1)
     { 
       echo "Duplicate Entry!";
     }
    else
    {

    $sql="replace into pipe (data1, data2) 
    values ('$data1','$data2')";



    if(!mysqli_query($con,$sql))
    {
    die('Error : ' . mysqli_error($con));
    }


    echo "Record to Registraton added";

    $result = mysqli_query($con,"SELECT * FROM pipe");

    echo "<table border='1'>
    <tr>
    <th>Data1</th>
    <th>Data2</th>
    </tr>";

    while($row = mysqli_fetch_array($result))
      {
     echo "<tr>";
      echo "<td>" . $row['data1'] . "</td>";
      echo "<td>" . $row['data2'] . "</td>";
      echo "</tr>";
      }
    echo "</table><br><br>";

    }

    mysqli_close($con);


    ?>
于 2013-07-04T10:52:41.457 回答
0

如果您不想在有重复的情况下处理这种情况,只需使用 INSERT IGNORE INTO 而不是 INSERT INTO。它将与 INSERT 完全一样工作,但如果有重复则不会失败。

于 2013-07-04T10:51:05.430 回答
0

如果要消除 1 笔中的重复记录,可以使用 mysql 中可用的 REPLACE 命令(参考:http ://dev.mysql.com/doc/refman/5.0/en/replace.html )。如果已经存在具有相同值的行,则它将删除现有行并添加新行,否则它将插入新记录。

您甚至可以在Insert into a MySQL table or update if exists 中查找其他选项

于 2013-07-04T11:00:44.770 回答