假设您的所有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()
并增加了限制条款。这将提高查询的效率。