从数据库中检索下拉选项

时间:2015-05-20 11:57:28

标签: php mysql wordpress

我想创建一个充满数字的下拉列表。需要从数据库中检索这些数字。与数据库的连接和假定的显示代码如下:

检索下拉列表选项的函数

    <?php
    function dropdown_menu() {

    global $wpdb;
    /* Query the database */
    $query = $wpdb->prepare('SELECT * FROM LID ORDER BY LidID', 'LID', 'LidID');
    $results = $wpdb->get_results($query);

    /* Check for $results */
    if(!empty($results)) :

    /* Loop through the $results and add each as a dropdown option */
    global $options;
    $options = '';
    foreach($results as $result) :

    echo ("<option value=\"<?php echo $item->LidID ?>\"> <?php echo $item->LidID ?> </option>");

    endforeach;
    endif; 
    }
    ?>

包含上述功能的声明:

    <tr class="form-field form-required">
                <th scope="row"><label for="LidID">Lid ID <span class="description">(verplicht)</span></label></th>
                <td><select name="LidID" id="LidID" value="<?php echo $item->LidID ?>" aria-required="true"> <?php dropdown_menu(); ?> </select></td>
            </tr>

我遇到的问题是,它会在数据库中创建一个下拉列表,其中包含相应数量的“LidID”记录,但它们都显示为空白。我已经一直在玩它,我想我知道问题是什么,但我不知道如何解决它。我认为问题在于echo语句;

    echo ("<option value=\"<?php echo $item->LidID ?>\"> <?php echo $item->LidID ?> </option>");

当我删除第二个LIDID时?&gt;并将其替换为例如5,它显示五个列表。由于某种原因,它不承认我写的声明。我试图将echo语句中的$ item-&gt; LidID切换为$ result-&gt; LidID,但这似乎没有任何影响。有没有人对这里出了什么问题有任何想法?

哦,是的,我不知道它是否相关,但它是wordpress的插件。

1 个答案:

答案 0 :(得分:1)

你是对的,这就是问题所在。回声时你已经使用PHP了,所以你不需要打开更多的PHP标签。其他问题是$item不存在。另一个问题是您没有正确使用MySQLi,如果您有变量,则只使用prepare,但不要使用它。您也不会在该上下文中使用get_results。试试这个:

function dropdown_menu($default) {
    global $wpdb;
    /* Query the database */
    $query = 'SELECT * FROM LID ORDER BY LidID, LID, LidID';
    $results = $wpdb->query($query);
    while ($item = $results->fetch_assoc()):
        echo '<option value="'.$item->LidID.'"'.($item->LidID == $default ? ' selected="selected"' : '').'>'.$item->LidID.'</option>';
    endwhile;
}

然后调用函数

<td>
    <select name="LidID" id="LidID" aria-required="true"> <?php dropdown_menu($item->LidID); ?> </select>
</td>