#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.