用于验证数据的自定义数据库查询

时间:2015-04-21 作者:Piyush Rawat

我找不到任何自定义查询的语法,使用$wpdb对我来说是新的,所以有人能帮我解决这个问题吗??

if(isset($_POST[\'submit\']))
{
 global $wpdb;

$tablename=\'wp_form_subscribe\';

$myrows = $wpdb->get_results( "SELECT * FROM wp_form_subscribe   where     email=$wpdb->email" );
 if($myrows==0)
 {
 $data=array(
 \'name\' => $_POST[\'fullname\'], 
 \'age\' => $_POST[\'age\'],
 \'email\' => $_POST[\'email\']);


  $wpdb->insert( $tablename, $data);
  }
  else 
  {
  $status=\'User already subscribed\';
  }
  $status=\'\';
  }

1 个回复
最合适的回答,由SO网友:TheGentleman 整理而成

假设您的所有sql列名都是正确的,类似这样的方法应该可以工作:

if(isset($_POST[\'submit\'])){
    global $wpdb;
    $tablename= $wpdb . \'form_subscribe\';
    $myrows = $wpdb->get_var( $wpdb->prepare("SELECT email FROM $tablename WHERE email=%s LIMIT 1", $_POST[\'email\']));
    if(empty($myrows)){
        $data=array(
            \'name\' => $_POST[\'fullname\'], 
            \'age\' => $_POST[\'age\'],
            \'email\' => $_POST[\'email\']
        );
        $wpdb->insert( $tablename, $data);
    }
    else {
        $status=\'User already subscribed\';
    }
    $status=\'\';
}
我改变了$wpdb->email$_POST[\'email\'], 我想这就是你的意思。此外,我还添加了$wpdb->prepare() 卫生功能和$wpdb->prefix 获取最佳实践。

由于您正在进行查找以检查现有的内容(即1条现有记录与1000条现有记录的含义相同),因此我更改了$wpdb->get_results()$wpdb->get_var() 并增加了限制条款。这将提高查询的效率。

结束

相关推荐

修复wpdb->GET_RESULTS和wpdb->准备?

所以我一直在使用这个主题Vilan 从他们前面。除了这个主题,还有几个插件,其中一个是Revolution Slider. 我也在使用Bedrock 通过Roots. 我收到以下错误:注意:wpdb::prepare的调用不正确。wpdb::prepare()的查询参数必须有占位符。有关详细信息,请参阅WordPress中的调试。(此消息是在版本3.9中添加的。)在/Applications/MAMP/htdocs/localppl/web/wp/wp-includes/functions中。php第35