Я пытаюсь обновить таблицу, но ничего не меняется. Имя и поля базы данных верны.
<?php require("config.php"); $forname = $_POST['name']; $newval = "yes"; mysqli_query($con, "UPDATE pupils SET signin = '$newval' WHERE forname = '$forname'"); mysqli_close($con); ?>
Помогите оценить! Благодаря,
ОБНОВИТЬ
Похоже, что по какой-то причине данные корректно публикуются.
<form class="form-inline" name="markin" role="form" method="POST" action="markin.php"> <div class="form-group"> <select class="form-control" name"name" id="name"> <?php $query = "SELECT * FROM `pupils` WHERE signin = 'no'";//Grab the data $result = mysqli_query($con, $query); while ($row = mysqli_fetch_array($result)) {//Creates a loop to loop through results echo "<option>" . $row['forname'] . "</option>";//$row['index'] the index here is a field name } ?> </select> </div> <button type="submit" class="btn btn-success">Mark in</button> </form>
Это ужасный способ использования расширения mysqli .
Во-первых, я предлагаю вам прочитать подготовленные инструкции quickstart, которые приведут вас к чему-то вроде этого …
$stmt = $con->prepare('UPDATE pupils SET signin = ? WHERE forname = ?'); $stmt->bind_param('ss', $newval, $forname); $stmt->execute();
В качестве дополнительного бонуса вы должны установить mysqli для исключения исключений при ошибке, поэтому вам не нужно постоянно проверять возвращаемые значения. В файле config.php
перед созданием соединения сделайте это …
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); $con = new mysqli(...); // or however you create $con
и, как упоминалось в комментариях, файл php.ini
в вашей среде разработки должен включать полную отчетность об ошибках со следующими директивами
error_reporting = E_ALL display_errors = On
Чтобы ответить на ваш вопрос, вам не хватает знака равенства для атрибута name
<select>
. Должен быть
<select class="form-control" name="name" id="name">