你不应该使用mysql_num_rows()
或mysql_error()
处理时$wpdb
. 即使你不是,mysql_error()
表示数据库错误,空结果集不是数据库错误。
如果您想知道是否返回了结果,只需检查count()
其中:
$duplicateEmail = $wpdb->get_results($emailTest, OBJECT);
if ( count( $duplicateEmail ) > 0 ) {
// Email already exits.
}
就“返回错误”而言,这完全取决于上下文。如果您只需要一个带有错误消息的空白屏幕,那么您可以使用
wp_die()
:
$duplicateEmail = $wpdb->get_results($emailTest, OBJECT);
if ( count( $duplicateEmail ) > 0 ) {
wp_die( \'Email already exits.\' );
}
或者如果这是一个AJAX请求,您可以使用
wp_send_json_error()
返回
400
JSON中包含消息的错误代码:
$duplicateEmail = $wpdb->get_results($emailTest, OBJECT);
if ( count( $duplicateEmail ) > 0 ) {
wp_send_json_error( \'Email already exits.\', 400 );
}
此外,您确实不应该像现在这样将变量直接放入SQL unescaped中。这使您容易受到SQL注入攻击。而是使用
$wpdb->prepare()
生成包含变量的查询。您还应该使用
$wpdb->prefix
这样即使用户使用的数据库前缀不是
wp_
:
$query = $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}email_subscribers WHERE email = %s", $email );
$results = $wpdb->get_results( $query );
if ( count( $results ) > 0 ) {
wp_send_json_error( \'Email already exits.\', 400 );
}