【问题标题】:How to compare User Input to Custom WordPress Database Table如何将用户输入与自定义 WordPress 数据库表进行比较
【发布时间】:2018-11-14 06:42:21
【问题描述】:

我创建了一个在数据库中创建表的插件,我也在该表中插入了一些值。该表只有 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

}

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

【问题讨论】:

  • 我已经用$wpdb-&gt;get_results() 和查询$wpdb-&gt;get_results("SELECT auth_code FROM $table_name WHERE auht_code = '$prod_auth'"); 进行了检查,但没有工作。

标签: php mysql database wordpress


【解决方案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 );

【讨论】:

  • 可能在 where 子句中使用的 $prod_auth 的值在表中不存在。可以检查确认运行查询是否有错误wpdb-&gt;print_error()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多