HTML-форма, изменяющая переменные echo'ed, но не база данных?

У меня есть эта форма:

<div class="col-md-6"> <h4>Update Contact Details</h4> <form action="" method="post" name="contact" id="contact"> <div class="form-group"> <label>*Address:</label> <input type="text" class="form-control" id="address_line_1" name="address_line_1" value="<? echo $address_line_1; ?>" placeholder="Address Line 1..." required="required"> <input type="text" class="form-control" id="address_line_2" name="address_line_2" value="<? echo $address_line_2; ?>" placeholder="Address Line 2..."> <label>*Postcode:</label> <input type="text" class="form-control" id="postcode" name="postcode" value="<? echo $postcode; ?>" placeholder="Postcode" required="required"> </div> <div class="form-group"> <label>*Phone Number:</label> <input type="number" class="form-control" id="contact_number" name="contact_number" value="<? echo $contact_number; ?>" placeholder="Phone Number" required="required"> </div> <div class="form-group"> <input type="hidden" class="form-control" id="userid" name="userid" value="<? echo $userid; ?>"> <button type="submit" id="contact" name="contact" class="btn btn-primary btn-sm">Save Details</button> </div> </div> 

Что работает с этим скриптом:

 if(isset($_POST['contact'])){ $address_line_1 = str_replace("'","\\'",$_POST['address_line_1']); $address_line_2 = str_replace("'","\\'",$_POST['address_line_2']); $postcode = str_replace("'","\\'",$_POST['postcode']); $contact_number = $_POST['contact_number']; $uid = $_POST['userid']; mysqli_query($conn, "UPDATE ap_users SET address_line_1 = '$address_line_1', address_line_2 = '$address_line_2', postcode = '$postcode', $contact_number = '$contact_number' WHERE user_id = '$uid'"); } 

Очень простой, я знаю – когда я отправляю форму, переменные, которые эхом на странице, такие как echo $address_line_1 все меняются на новые результаты, хотя, когда я перезагружаю страницу, они возвращаются к старым результатам. Похоже, что база данных MySQL не обновляется, когда я отправляю форму, и я не слишком уверен, почему?

Related of "HTML-форма, изменяющая переменные echo'ed, но не база данных?"

По просьбе ОП.

Добавьте или die(mysqli_error($conn)) в mysqli_query() чтобы узнать, исходят ли ошибки.

Также лучше также использовать affected_rows() для обновления.

Кроме того, вы используете if(isset($_POST['contact'])){ и имеют 2x атрибуты имени для формы и кнопки.

Удалите его из <form> . Атрибут name в <form> работает только при использовании jQuery / Ajax.

Кроме того, если ваша форма и PHP / SQL находятся в одном файле, используйте заголовок для перенаправления на ту же страницу и убедитесь, что вы не * выходите перед заголовком. и убедитесь, что короткие теги включены.

Рекомендации:


Ваш существующий код открыт для SQL-инъекции . Используйте mysqli_* с подготовленными инструкциями или PDO с подготовленными операторами .