#php #sql #html
#php #sql #HTML
Вопрос:
Я думаю, что этот вопрос будет довольно интересным. Итак, как следует из названия, я пытаюсь создать динамическое select
поле. В принципе, когда придет время, мое веб-приложение подключится к моей базе данных и извлечет всю строку, соответствующую моему запросу. Мой вопрос заключается в следующем: Как я могу представить данные из ОДНОГО из столбцов в строке как ОТДЕЛЬНЫЕ параметры в select
теге? Это то, что я пытаюсь прямо сейчас:
<select>
<?php
$servername = "127.0.0.1";
$username = "root";
$password = "";
$dbname = "people";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}else{
$search_query = "SELECT * FROM people_list WHERE person_id = $_SESSION[person_id]";
$result = $conn->query($search_query);
while($person_result_list = mysqli_fetch_assoc($result)){
echo "
<option value='$result[person_result_list]'>'$result[person_name]', '$result[person_result_list]'</option>
";
}
}
?>
</select>
Это возвращает ошибку:
Cannot use object of type mysqli_result as array
Это должно быть довольно просто исправить, но я просто не могу найти обходной путь для этого. Есть идеи?
Спасибо всем!
Ответ №1:
Невозможно использовать объект типа mysqli_result в качестве массива
Это из-за этого утверждения,
<option value='$result[person_result_list]'>'$result[person_name]', '$result[person_result_list]'</option>
^^^^^^^ ^^^^^^^ ^^^^^^^
$result
это MySQLi
результирующий объект, а не массив.
Мой вопрос заключается в следующем: Как я могу представить данные из ОДНОГО из столбцов в строке в виде ОТДЕЛЬНЫХ параметров в теге выбора?
Просто извлеките строку из результирующего набора и используйте foreach
цикл для отображения каждого отдельного значения столбца внутри <option>
элемента, например:
// your code
$search_query = "SELECT * FROM people_list WHERE person_id = $_SESSION[person_id]";
$result = $conn->query($search_query);
$person_result_list = mysqli_fetch_assoc($result)
foreach($person_result_list as $value){
echo '<option value="' . $value . '">' . $value . '</option>'
}
// your code
Ответ №2:
вы можете использовать GROUP_CONCAT в запросе. Он вернет вам разделенную запятыми строку значений только вашего целевого столбца. Затем вы можете разделить эту строку, чтобы сделать ее массивом для использования в раскрывающемся списке select.