Я создаю простой инструмент для отслеживания ошибок.Обновление таблицы в Mysql с помощью формы
Когда вы создали проект, вы можете выбрать статус проекта (открыть, в процессе, закончено).
Вы можете изменить этот статус на странице проекта с этой избранной формой:
<form action="classes/changestatus.class.php" method="post">
<label> Change Project Status </label>
<select name="status" id="status">
<option value="open">Open</option>
<option value="inprogress">In Progress</option>
<option value="finished">Finished</option>
</select>
<input class="small button" value="Change Status" type="submit">
</form>
формы сообщения Действия этого класса:
$status = $_POST['status'];
$sql = "UPDATE INTO projects (status) VALUES ('$status')";
$result = mysql_query($sql);
$result = mysql_real_escape_string($sql);
$latestID = mysql_insert_id();
if ($result) {
header('Location: ../projectpage.php?id='.$latestID);
} else {
echo "There is something wrong. Try again later.";
}
mysql_close();
Итак, когда вы отправите форму его выполнит указанный выше запрос и вернется к странице проекта с измененным статусом проекта, но это не сработает. Я всегда перенаправляюсь на неправильную страницу проекта, и данные не обновляются в таблице mysql.
Проблема в том, что я не могу получить идентификатор, если у меня есть эта ссылка, например, «projectpage? Id = 20», она всегда перенаправляет меня на «projectpage? Id = 0».
Может ли кто-нибудь мне помочь? Я знаю, что код не полностью sql-инъекции, и я не использую mysqli, мне просто нравится иметь anwser по моему вопросу.
Спасибо!
и ваш код уязвим для ___SQL INJECTION___ либо надлежащим образом избежать все просьбы или использовать подготовленные заявления –
Не говоря уже о '$ результат = mysql_real_escape_string ($ SQL);' ВСЕГДА возвращает истину ... – Mike
Пожалуйста, пожалуйста, пожалуйста, _please_ : Прекратить использование 'mysql_ *' функций, все расширение устарело и будет удалено в ближайшем будущем. Узнайте, как использовать 'PDO' или' mysqli_ * '(' i' для _improved_). Не могли бы вы объяснить, почему вы _first_ вызываете 'mysql_query', а _then_ вызывают' mysql_real_escape_string'? Потому что это делает _no sense_ вообще –