即使检测到是否存在多个DB插入?

时间:2017-03-13 12:30:14

标签: php mysql wordpress

我有一个监听$ _POST输入的php脚本,并插入到我的表中,然后可以在我的Wordpress插件中读取并显示给管理员。鉴于人们多次提交表单,我使用表单中发送的唯一发票号检查数据库以查看该条目是否已存在。

我的代码是:

global $wpdb; 
$submits_table = $wpdb->prefix . 'submits_table';
$invoice = $_POST['invoice'];
$exists = $wpdb->get_row( "SELECT * FROM $submits_table WHERE `invoice` = $invoice" );
    if ( $exists == NULL ) {

        $wpdb->insert(
            $submits_table,
                array(
                'first_name' => $_POST['first_name'],
                'ip_address' => $_POST['ipaddress'],
                'invoice' => $invoice
            ),
            array(
                '%s',
                '%s',
                '%s'
            )
        );

}

问题在于,无论发票编号是否已存在,都会插入每次提交。我在管理面板的不同页面上尝试了相同的代码,它可以正常工作;只有当它被设置为前端提交的监听器时它才能正常工作。

我正在撕开我的头发。关于为什么get_row()每次在前端而不是管理员返回NULL的任何想法?

编辑:invoice是字母数字,因此它是varchar

1 个答案:

答案 0 :(得分:0)

wpdb::get_row

  

返回

     

(array | object | null | void)数据库查询结果的格式由   $ output或 null失败

因此,检查null

的存在者不是一种正确的方法

相反,检查返回结果的计数:

if (count($exists) > 0)