首页 > 解决方案 > 从 wpdb 填充下拉列表

问题描述

我正在尝试从我的 wpdb 中检索一个列表并填充一个下拉列表,但似乎我做错了,因为下拉列表中有 2 个空值(我返回了 2 个结果)。

<?php
global $wpdb;
global $results;

$results = $wpdb->get_results ( "SELECT Firstname from Professionals" );
?>

<div class="wrap">
    <div id="primary" class="content-area">
        <main id="main" class="site-main" role="main">
        <?php get_search_form(); ?>
        <select class="dropdown" id="mydropdown" name="mydropdown" title="My Dropdown">
    <?php
    foreach ($results as $value) {
            echo '<option value="' .$value. '">' .$value. '</option>';
     }

    ?>

标签: phpwordpress

解决方案


该方法get_results()返回一个对象数组或数组,但是您将其视为字符串数组。

你有几种方法可以解决这个问题。

切换到get_col()

此方法将按照您的预期返回一个字符串数组。

$results = $wpdb->get_col("SELECT Firstname from Professionals" );

使用对象索引

默认返回的get_results()是一个数组 ob 对象,其中列作为对象的属性。这不适用于所有列名,但应该适用于您的列名。

    foreach ($results as $value) {
            echo '<option value="' .$value->Firstname. '">' .$value->Firstname. '</option>';
     }

使用数组表示法

您需要为get_results()函数 ARRAY_A 提供第二个参数:

$results = $wpdb->get_results ( "SELECT Firstname from Professionals", OBJECT );
    foreach ($results as $value) {
            echo '<option value="' . $value['Firstname'] . '">' .$value['Firstname'] . '</option>';
     }

推荐阅读