在MySQL中插入唯一记录

时间:2017-09-17 09:05:53

标签: php mysql

我将数据插入到付款表中,其中Ref列必须是唯一的。在下面的代码中,$ref=$_POST['PAYMENT_ID'];我总是在每个帖子中插入一个新的ref no和其他列值。有时它会发布重复参考号。我试图保持裁判没有独特性。

为此,我编写了以下代码。我想要做的是,如果现有的Ref Column值与新的$ref=$_POST['PAYMENT_ID']值不匹配,那么它将插入数据。但它不工作并插入ref no no匹配新参考号。

我该怎么做?

<?php
$ref=$_POST['PAYMENT_ID'];
$pending = "Pending";
$method = "Uploaded funds";
$today = date('Y-m-d');
$time=$_POST['TIMESTAMPGMT'];
$type = "Pm";

$table_payments = $wpdb->prefix . "payments";
$check=$wpdb->get_results("SELECT Ref FROM $table_payments");
$checkrows=mysqli_num_rows($check);

         if ($checkrows!=$ref) {
                if($hash2==$_POST['V2_HASH']){
                    $wpdb->insert( $table_payments, array(
                        'Method' => $method,  
                        'Today' => $today,
                        'Time' => $time,
                        'Ref' => $ref,
                        'Batch' => $batch,                      
                        'Type'  => $type,
                        'Status' => $pending,
                        'User' => $me
          ));}}
      ?>

1 个答案:

答案 0 :(得分:1)

问题是,$Ref是用户提交的值,$checkrows保存$table_payments表中的总行数。这就是条件if ($checkrows!=$ref) { ...失败的原因。

您必须按以下方式更改SQL查询和后续代码,

// your code
$table_payments = $wpdb->prefix . "payments";
$check=$wpdb->get_results("SELECT * FROM $table_payments WHERE Ref = '$ref'");
$checkrows=$wpdb->num_rows;

if ($checkrows == 0) {
    // do INSERT operation
}

此外,您应该将表格的Ref唯一