【问题标题】:WordPress and PHP | Check if row exists in database if yes don't insert dataWordPress 和 PHP |检查数据库中是否存在行如果是不插入数据
【发布时间】:2018-11-10 07:28:50
【问题描述】:

我对 WordPress 和 SQL 还很陌生。我有一个联系表单,我希望将数据提交到我的 WordPress 数据库,但前提是之前没有输入已输入的数据。

这是我到目前为止所拥有的,它在提交表单时将数据发送到我的数据库。

if(isset($_POST['contact_us'])) {
    $invalidContact = "<h5 class='invalidBooking'> Nope try again</h5>";
    $successContact = "<h5 class='invalidBooking'> Message Sent!</h5>";
    $table_name='contact_table';
    global $wpdb;

    $contact_name = esc_attr($_POST['contact_name']);
    $contact_email = sanitize_email($_POST['contact_email']);
    $subject = esc_attr($_POST['subject']);
    $message = esc_attr($_POST['message']);

    $error= array();


    if (empty($contact_name)) {
        $error['name_invalid']= "Name required";
    }
    if (empty($contact_email)){
        $error['email_invaild']= "Email required";
    }

    // Im guessing some code here to check if row exists in database

    if (count($error) >= 1) {
        echo $invalid;
    }
    if (count($error) == 0) {
        $data_array=array(
            'Contact_Name'=>$contact_name,
            'Contact_Email'=> $contact_email,
            'Contact_Subject'=> $subject,
            'Contact_Message'=> $message,
        );

        $rowResult=$wpdb->insert($table_name, $data_array,$format=NULL);
        echo $successContact;
    } 

}

【问题讨论】:

  • 下面的答案可能是你想要的,但更重要的是,如果之前输入的数据之前没有输入过,那么基于你想要找到的答案。通过检查电子邮件?联系人姓名 ?或发布主题? ...例如,如果通过电子邮件检查,您的意思是您只希望他们只提交 1 次表格,他们不能在不同的日子使用相同的电子邮件为不同的目的提交其他表格?
  • 是吗?我不确定我现在是否想要。因此,只要所有字段与他们之前输入的内容不匹配,用户就可以多次提交表单。就像用户第一次提交表单一样,如果他们尝试再次提交所有相同的信息,它将无法正常工作,但如果他们使其中一个字段不同,那就没问题了。
  • 好的,如果是这样,那么使用下面答案中的代码,然后将所有列放入WHERE

标签: mysql wordpress


【解决方案1】:

你可以试试这个代码

if (count($error) == 0) {
    $data_array=array(
        'Contact_Name'=>$contact_name,
        'Contact_Email'=> $contact_email,
        'Contact_Subject'=> $subject,
        'Contact_Message'=> $message,
    );

 $query = "SELECT * FROM $table_name WHERE 'Contact_Name'= '$contact_name' AND 'Contact_Email' = '$contact_email' AND 'Contact_Subject' = '$subject' AND 'Contact_Message' = '$message'";
 $query_results = $wpdb->get_results($query);
 if(count($query_results) == 0) {
    $rowResult=$wpdb->insert($table_name, $data_array,$format=NULL);
 }
}

希望这对你有用。

【讨论】:

    【解决方案2】:

    使用此代码获取数据

    $query = "SELECT * FROM {$wpdb->prefix}table WHERE column = 1";
    echo $query;
    $results = $wpdb->get_results($query);
    

    然后你就知道该怎么做了……

    【讨论】:

    • 我不确定我是否正确使用了此代码。我通过将 column = 1 更改为 Contact_Email = $contact_email 对其进行了测试,但仍然无法正常工作?对不起,我是一个完全的新手。比如你如何获取数据?我尝试过的方式给了我一个空白屏幕。
    • 回显查询并通过 phpmyadmin 运行。如果您正在获取数据,那么查询就可以了。并将这一行放在 wp_config.php 文件中 define('WP_DEBUG', true);
    • @ParthShah 如何回显查询? $query 在哪里?
    • 查询你传入的get_results函数。检查我的答案,我只是更新它。
    猜你喜欢
    • 2015-09-22
    • 1970-01-01
    • 1970-01-01
    • 2013-08-22
    • 1970-01-01
    • 2017-11-09
    • 2014-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多