我有一个函数,它根据一个简单的值数组检查输入的值,以确定是否匹配。
function validate_unit_type( $result, $value ) {
$pattern = ["U" ,"SE" ,"SHOP" ,"OFF" ,"APT" ,"CTGE" ,"DUP" ,"FY" ,"F" ,"HSE" ,"KSK" ,"MSNT" ,"MB" ,"PTHS" ,"RM" ,"SHED" ,"SITE" ,"SL" ,"STU" ,"TNHS" ,"VLLA" ,"WARD"];
if ( !empty( $value ) && !in_array( $value, $pattern ) ) {
$result[\'is_valid\'] = false;
$result[\'message\'] = \'Invalid Unit Type.\';
}
return $result;
}
这很好用。
$pattern中的数组值也保存在MySQL DB表列中,我正试图让wpdb类将这些值读入数组中,以适应函数。
global $wpdb;
$results = $wpdb->get_results("SELECT unit_type from wpqi_enum_unit_type", ARRAY_A);
除了添加上述(wpdb)之外,我还需要向函数添加什么才能使其正常工作?
最合适的回答,由SO网友:Sally CJ 整理而成
我在试着wpdb
类将这些值读入数组以适合函数
您可以手动循环$results
数组以生成$pattern
数组,但更简单的方法是使用$wpdb->get_col()
获取unit_type
列:
$pattern = $wpdb->get_col( "SELECT unit_type from wpqi_enum_unit_type" );
/* Alternate version (i.e. manually loop through $results):
$pattern = array();
$results = $wpdb->get_results( "SELECT unit_type from wpqi_enum_unit_type" );
foreach ( $results as $row ) {
$pattern[] = $row->unit_type;
}
*/
附加代码
这只是一个建议:而不是
in_array()
(英寸
validate_unit_type()
), 您也可以这样做
$wpdb->get_var()
:
if ( ! empty( $value ) ) {
// This way, there\'d be no need for the $pattern.
$count = (int) $wpdb->get_var( $wpdb->prepare( "
SELECT COUNT(*) from wpqi_enum_unit_type
WHERE unit_type = %s
LIMIT 1
", $value ) );
if ( $count < 1 ) {
$result[\'is_valid\'] = false;
$result[\'message\'] = \'Invalid Unit Type.\';
}
}
附加说明
我假设
wpqi_
是表前缀,因此我建议您使用
$wpdb->prefix
. 例如。
$table = $wpdb->prefix . \'enum_unit_type\';
$pattern = $wpdb->get_col( "SELECT unit_type from $table" );