Php 相同的条形码意外地插入到我的数据库中

Php 相同的条形码意外地插入到我的数据库中,php,mysqli,Php,Mysqli,这是一个用于将条形码插入数据库的代码,但如果数据库中存在相同的条形码,我不需要再次插入相同的条形码,因此我像这样编码,但仍然会将相同的条形码插入我的数据库。这段代码中的错误是什么 我使用mysqli和Bootstrap来显示页面中的错误,该页面通过ajax从另一个名为product.php的页面执行,并在另一个名为showuser.php的页面中显示,因为它在一个表中得到更新,该表应该给出输出 <?php include('conn.php'); if(i

这是一个用于将条形码插入数据库的代码,但如果数据库中存在相同的条形码,我不需要再次插入相同的条形码,因此我像这样编码,但仍然会将相同的条形码插入我的数据库。这段代码中的错误是什么

我使用mysqli和Bootstrap来显示页面中的错误,该页面通过ajax从另一个名为product.php的页面执行,并在另一个名为showuser.php的页面中显示,因为它在一个表中得到更新,该表应该给出输出

<?php
        include('conn.php');

        if(isset($_POST['add'])){
            $proname=$_POST['product'];
            $bar=$_POST['barcode'];
            $war=$_POST['warranty'];
            $gar=$_POST['guarranty'];
            $amount=$_POST['amount'];
            $id = $_POST['cusid'];
            $date = $_POST['date'];

            $check = "SELECT * FROM warranty_update WHERE battery_serial = '$bar'";
            $rs = mysqli_query($con,$check);
    $data = mysqli_fetch_array($rs, MYSQLI_NUM);
    if($data[0] > 1) {

    ?>
        <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>


        <h3 align="center"><i class="   glyphicon glyphicon-warning-sign"></i><br>
    <br>
      Sorry Barcode Already Been Inserted !<br><br>

    Please Go Back</h3>
    <?php } else {

         $datesplit     = explode("-",$date);
         $warranty      = $datesplit[0];
         $guarante      = $datesplit[0];


         $day    = $datesplit[1];
         $month  = $datesplit[2];

          $fdate =  strtotime($date);
          $Gm=strtotime("+$gar Months",$fdate);
          $wm=strtotime("+$war Months",$Gm);
            $m1=date("Y-m-d", $Gm) ;
            $m2 =date("Y-m-d", $wm) ;

         $today =  date("Y/m/d");


          $expiry_warranty = $m2;
          $expiry_guarante = $m1;

        //mysql_query("INSERT INTO `cus_reg`(`reg_id`, `name`, `mobile`, `battery_serial`, `model`, `date`, `reg_by`, `warranty_expiry`, `waranty_span`,`guarantee_expiry`, `g_span`) VALUES (NULL,'$name','$mobile','$battery_serial','$vehicle_num','$date','$regby','$expiry_warranty', '$wmonth', '$expiry_guarante', '$gmonth')")==true or die(mysql_error);


            //mysql_query("INSERT INTO `warranty_update`(`wa_id`, `cus_reg_id`, `new_barcode`, `date`) VALUES (NULL,LAST_INSERT_ID(),'$battery_serial','$today')");

    mysqli_query($conn,"INSERT INTO `warranty_update`(`wa_id`, `reg_id`, `battery_serial`, `model`, `date`, `warranty_expiry`, `waranty_span`, `guarantee_expiry`, `g_span`, `amount`) VALUES (NULL,'$id','$bar','$proname','$today','$expiry_warranty','$war','$expiry_guarante','$gar','$amount')");  
    mysqli_query($conn,"INSERT INTO `replacements`(`r_id`, `reg_id`, `wa_id`, `new_barcode`, `date`) VALUES ('NULL','$id',LAST_INSERT_ID(),'$bar','$today')");  
       ?>


       <!--header("refresh:1;url=home.php");-->

         <h3 align="center"><i class="  glyphicon glyphicon-warning-sign"></i><br>
    <br>
      Data Successfully Inserted !  


    <?php }


        }
    ?>

不完全确定,但您应该像这样检查数组中的条目:

if (count($data) > 0)

不完全确定,但您应该像这样检查数组中的条目:

if (count($data) > 0)

最好的方法是通过SQL定义条形码的唯一约束。 不管怎样,我认为你是在错误的模式下评估情况的。 $data是一个数组,因此您应该使用:sizeof检查其大小

所以:
if(sizeof($data)>1){

实现这一点的最佳方法是通过SQL定义条形码的唯一约束。 不管怎样,我认为你是在错误的模式下评估情况的。 $data是一个数组,因此您应该使用:sizeof检查其大小

所以:
if(sizeof($data)>1){

关于重复密钥更新我能得到什么u man??关于重复密钥更新我能得到什么u man??请告诉我如何定义唯一约束但为什么它不起作用?你能打印$data的值吗?查询是否正确并正在检索某些数据?请在执行查询后插入HTML文件进行检查。在成瘾中,你可以在这样的表格上有一个独特的约束:**Altable table PursithyUpage添加唯一(BATTYYSY系列)**如果你可以,考虑阅读这一页:有一个美好的一天。它工作了,但我不能为相同的条形码插入提供错误提示。请告诉我如何定义唯一约束但为什么它不工作?你能打印$data的值吗?查询是否正确并正在检索某些数据?请在执行查询后插入HTML文件进行检查。在成瘾中,你可以在这样的表格上有一个独特的约束:**Altable table PursithyUpage添加唯一(BATTYYSY系列)**如果你可以,考虑阅读这页:有一个美好的一天。YUP我给它作为唯一的,它工作,但我不能给一个错误笔记相同的条形码插入。