@frostisdead

Не редактируется БД через PHP. Что делать?

Прохожу самостоятельное обучение по PHP и сейчас нахожусь в разделе про SQL. Задача предполагает создание двух файлов, один из которых предлагает форму для введения данных (допустим, Index.php), другой же проводит изменения в БД на основании значений из формы первого файла (Update.php). Сами команды SELECT и UPDATE были проверены в PHPmyAdmin. Файл Update.php не выдает никаких ошибок после введения формы, но при этом данные не вносятся.
Index.php

$link = mysqli_connect('localhost', 'root', '', 'test');
$id = $_GET['id'];
$_id = mysqli_real_escape_string($link, $id);
$query = "SELECT * FROM `uk` WHERE `id` = '$_id'";
print_r ($query);
$result = mysqli_query($link, $query) or die(mysqli_error($link). ' ' . $query);
$nr = mysqli_num_rows($result);
$user = mysqli_fetch_assoc($result);
var_dump ($user);
<form action="save.php?id=<?= '$id' ?>" method="POST">
	<input name="name" value="<?= $user['name'] ?>">
	<input name="age" value="<?= $user['age'] ?>">
	<input name="salary" value="<?= $user['salary'] ?>">
	<input type="submit">
</form>


Update.php

$link = mysqli_connect('localhost', 'root', '', 'test');
$id = $_GET['id'];
$_id = mysqli_real_escape_string($link, $id);
$name = $_POST['name'];
$age = $_POST['age'];
$salary = $_POST['salary'];
$query = "UPDATE uk SET `name` = '$name', `age` = '$age', `salary` = '$salary' WHERE `id` LIKE '$_id'";
print_r ($query);
$check = mysqli_query ($link, $query) or die(mysqli_error($link));
print_r ($check);
echo 'User has been changed!';

  • Вопрос задан
  • 234 просмотра
Пригласить эксперта
Ответы на вопрос 2
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
$id = $_GET['id'];
$_id = mysqli_real_escape_string($link, $id);
Ок, то что мы не умеем в подготовленные выражения вместо бредового "экранирования" пол беды, и даже не страшно что операцию так то можно в 1 строку прописать, но далее
$name = $_POST['name'];
$age = $_POST['age'];
$salary = $_POST['salary'];
Ну типа, ид мы проверили, на этом наши полномочия все...

Файл Update.php не выдает никаких ошибок после введения формы, но при этом данные не вносятся.

Во первых - перестаньте называть файлы в разном регистре, если это не классы!!!
Во вторых - смотрим доку по mysqli, в частности рекомендуемая процедура подключения:
<?php
/* Вы должны включить отчёт об ошибках для mysqli, прежде чем пытаться установить соединение */
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = mysqli_connect('localhost', 'my_user', 'my_password', 'my_db');
/* Установите желаемую кодировку после установления соединения */
mysqli_set_charset($mysqli, 'utf8mb4');
printf("Успешно... %s\n", mysqli_get_host_info($mysqli));
После этого уже можно что-то смотреть, например что вернул print_r ($check);...
Ответ написан
mayton2019
@mayton2019
Bigdata Engineer
Попробуй сделать
autocommit(TRUE);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы