Как заполнить выпадающий список HTML со значениями из базы данных

как часть формы HTML, которую я создаю, я хотел бы иметь раскрывающийся список, в котором будут перечислены все имена пользователей в моей базе данных.

Я думал, что следующий код будет делать трюк, но выпадающий список пуст – может ли кто-нибудь помочь мне в том, что я делаю неправильно? Благодарю.

<tr> <td>Owner</td> <td> <select name="owner"> <?php $sql = mysqli_query($connection, "SELECT username FROM users"); while ($row = $sql->fetch_assoc()){ ?> <option value="owner1"><?php echo $row['username']; ?></option> <?php // close while loop } ?> </td> </tr> 

Я предполагаю, что у вас есть проблемы, так как вы не закрываете свой тег select после цикла. Может ли это сделать трюк?

 <select name="owner"> <?php $sql = mysqli_query($connection, "SELECT username FROM users"); while ($row = $sql->fetch_assoc()){ echo "<option value=\"owner1\">" . $row['username'] . "</option>"; } ?> </select> 

Ниже код хорош. Он был предоставлен кем-то другим по имени aaronbd по ссылке

 <?php $conn = new mysqli('localhost', 'username', 'password', 'database') or die ('Cannot connect to db'); $result = $conn->query("select id, name from table"); echo "<html>"; echo "<body>"; echo "<select name='id'>"; while ($row = $result->fetch_assoc()) { unset($id, $name); $id = $row['id']; $name = $row['name']; echo '<option value="'.$id.'">'.$name.'</option>'; } echo "</select>"; echo "</body>"; echo "</html>"; ?> 

Я бы предложил несколько шагов отладки.

Сначала запустите запрос непосредственно с БД. Подтвердите, что он возвращает результаты. Даже с чем-то таким простым, как вы можете обнаружить, что вы допустили ошибку, или стол пуст, или какая-то странность.

Если выше все в порядке, попробуйте выполнить цикл и повторить содержимое строки $ непосредственно непосредственно в HTML, чтобы узнать, что вы вернетесь в mysql_query, – посмотрите, совпадает ли это с тем, что вы получили непосредственно в БД.

Если ваши данные выводятся на страницу, а затем посмотрите, что не так в вашем форматировании HTML.

Однако, если из строки $ ничего не выводится, тогда выясните, почему mysql_query не работает, например, имеет ли пользователь разрешение на запрос этой БД, есть ли у вас открытое соединение с БД, может ли веб-сервер подключиться к БД и т. Д. [Что-то на эти строки часто могут быть получены)

Изменение запроса немного

 $sql = mysql_query("SELECT username FROM users") or die(mysql_error()); 

может помочь выявить любые ошибки: http://php.net/manual/en/function.mysql-error.php

 <select name="owner"> <?php $sql = mysql_query("SELECT username FROM users"); while ($row = mysql_fetch_array($sql)){ echo "<option value=\"owner1\">" . $row['username'] . "</option>"; } ?> </select> 
 <?php $query = "select username from users"; $res = mysqli_query($connection, $query); ?> <form> <select> <?php while ($row = $res->fetch_assoc()) { echo '<option value=" '.$row['id'].' "> '.$row['name'].' </option>'; } ?> </select> </form>