如何将用户输入与自定义WordPress数据库表进行比较

时间:2018-11-14 06:42:22

标签: php mysql database wordpress

我创建了一个插件,该插件在数据库中创建了一个表,我也在该表中插入了一些值。该表只有两列,分别是ID和auth_code,ID列是主键和自动增量,因此唯一要考虑的列是auth_code列。表创建和数据插入工作正常。我添加了一个短代码,供用户在单个字段中输入代码(在前端),我的插件会将其与自定义表中的auth_code字段进行比较,并返回TRUE或False。 auth_code列具有唯一的值,因此应该只有一个匹配项,或者没有匹配项。我的简码在这里

<?php

add_shortcode( 'prod_auth', 'product_auth_shortcode' );

function product_auth_shortcode(){

global $wpdb;

$table_name = $wpdb->prefix.'wpa_product_auth';

if(isset($_POST['submit'])){

    $prod_auth = $_POST['auth_code'];

    $check = $wpdb->get_col("SELECT * FROM  $table_name WHERE auht_code = '$prod_auth'");



    if($check->num_rows == 1){
        echo "<script>alert('Auth')</script>";
    }else{
        echo "<script>alert('Not Auth')</script>";
    }

}

?>
<form class="form-inline" method="post">
  <div class="form-group mb-2">

    <input type="text" readonly class="form-control-plaintext" value="Please 
Enter Your Unique Code">
  </div>
  <div class="form-group mx-sm-3 mb-2">
    <label for="UniqueCode" class="sr-only">Enter Your Unique Code</label>
    <input type="text" class="form-control" id="inputPassword2" placeholder="" name="auth_code">
  </div>

  <button type="submit" class="btn btn-primary mb-2">Authenticate</button>
</form>
<?php

}

我已将此简码添加到我的页面之一,该表单显示在此处,但未返回任何结果。在这方面的任何帮助将不胜感激。谢谢

1 个答案:

答案 0 :(得分:1)

过滤器中列的名称中有错字。应该是auth_code而不是auht_code;

$prepared_statement = $wpdb->prepare(
    "SELECT auth_code FROM {$table_name} WHERE auth_code = %s", $prod_auth );

$values = $wpdb->get_col( $prepared_statement );