Создание формы автозаполнения с помощью PHP

#php #html

#php #HTML

Вопрос:

Итак, я все еще относительно новичок в php и пытаюсь создать форму, которая автоматически заполняется информацией из таблицы. Таблица называется students и содержит идентификатор студента, имя и фамилию, а также их адрес. Я пытаюсь сделать так, чтобы она автоматически заполнялась только информацией о студенте с определенным идентификатором, например, если идентификатор студента равен 102, он заполняет текстовые поля их информацией.

У меня есть некоторый код, который, как я думал, будет работать, но он говорит мне, что что-то не так с циклом while, и я не знаю, что именно.

Редактировать: ошибка, которую я продолжаю получать, такова: «mysqli_fetch_assoc() ожидает, что параметр 1 будет mysqli_result».

PHP-код:

 <?php
        
require_once ('Connection.php');

$query = "SELECT * from students where Id = 102";

$result = mysqli_query($dbc, $query);

while ($row = mysqli_fetch_assoc($result)) {
 $row['student_id'];
 $row['stu_Fname'];
 $row['stu_Lname'];
 $row['stu_addr'];

}               
?>
 

Html-форма:

 <form action="http://localhost/test.php" method="post">
        
        <p>Student ID:
            <input name="stu_id" size="5" value="<?php echo $row['student_id']; ?>" pattern="^d{3}" required autofocus /><?php echo $row['student_id']; ?>
        </p>
        
        <p>First Name:
            <input type="text" name="fname" size="30" value="<?php echo $row['stu_Fname']; ?>"/>
        </p> 
            
        <p>Last Name:
            <input type="text" name="lname" size="30" value="<?php echo $row['stu_Lname']; ?>"/>
        </p>
        
        <p>Address:
            <input type="text" name="address" size="30" value="<?php echo $row['stu_addr']; ?>"/>
        </p>
        
        <p>
            <input type="submit" name="submit" value="Send"/>
        </p>
    </form>
 

РЕДАКТИРОВАТЬ: код подключения:

 <?php
        
        DEFINE ('DB_User', 'testuser');
        DEFINE ('DB_Password', 'abc123*');
        DEFINE ('DB_Host', 'localhost');
        DEFINE ('DB_Name', 'student');          
        
        //start database connection
        $dbc = new mysqli(DB_Host, DB_User,DB_Password,DB_Name);
            
            if(mysqli_connect_errno())
            {
                printf("can't connect to database.", mysqli_connect_error());
                exit();
            }           
    ?>
 

Комментарии:

1. кроме того, добавьте коды из Connection.php файла. Или подтвердите $dbc , что выполняется?

Ответ №1:

 while ($row = mysqli_fetch_assoc($result)) {
 $row['student_id'];
 $row['stu_Fname'];
 $row['stu_Lname'];
 $row['stu_addr'];
}   
 

На самом деле вы ничего не выполняете в цикле while выше. Нет ни назначения, ни вывода.

Каждая итерация цикла while будет захватывать строку (если она есть в базе данных). Предполагая, что строка содержит четыре перечисленных вами столбца, вы можете распечатать данные на экране. Например:

 while ($row = mysqli_fetch_assoc($result)) {
  echo $row['student_id'] . ", ";
  echo $row['stu_Fname'] . ", ";
  echo $row['stu_Lname'] . ", ";
  echo $row['stu_addr'];
}  
 

Предполагая, что вы выводите форму для каждого учащегося, вы можете поместить логику формы в цикл while.

Комментарии:

1. Я ожидал, что отсутствие там эха вызовет проблему. Но я получаю сообщение об ошибке «mysqli_fetch_assoc ожидает, что параметр 1 будет mysqli_result». что это значит?

2. Обычный рабочий процесс для запросов к базе данных — написать запрос, выполнить запрос, обработать результаты. Вы не показали код для настройки запроса или вызова запроса. На втором шаге вам будет предоставлен объект результата, который вы можете передать в mysqli_fetch_assoc, который затем вернет строки данных (если таковые имеются).

3. Что вы имеете в виду под настройкой запроса и вызовом запроса? Это mysqli_query?

4. $result = mysqli_query($dbc, $query); : Выглядит правильно для меня. Проверьте, что имеет $result после выполнения этого запроса. Если соединение в порядке и запрос действителен, то я бы ожидал, что $result является объектом mysqli_result и не выдает полученную вами ошибку. См. php.net/manual/en/mysqli . query.php о различных значениях, которые могут быть возвращены mysqli_query.