发现重复密钥时,WordPress将错误隐藏在日志中

时间:2018-11-28 13:07:58

标签: php mysql wordpress

我已将此$wpdb插入到我的表格中。该表中的唯一列是唯一的列,因此,如果该值已存在,则SQL应该无法正常工作,而这种方式是通过这种方式计划的。现在,我的问题是我的日志完全充满了Duplicate entry错误。我试图禁用错误日志记录,如您所见,但它不起作用。怎么了?

$wpdb->insert( 'test', array(
    'test_column' => $test,
) );

//Hide wpdb errors if duplicate entry found
$wpdb->hide_errors();

1 个答案:

答案 0 :(得分:1)

正如@EquaPro所说,隐藏错误不会解决问题:您正在尝试插入表中已经存在的唯一值。

相反,您可以在插入值之前检查该值是否存在:

if ( ! $wpdb->get_results( $wpdb->prepare('SELECT test_column FROM table WHERE test_column = %s', $test) ) ) {
    $wpdb->insert( 'test', array(
        'test_column' => $test,
    ) );
}

...,或者您可以进行INSERT IGNORE查询并为自己保存一个查询:

$wpdb->query(
    $wpdb->prepare('INSERT IGNORE INTO table (test_column) VALUES (%s)', $test)
);