Я пытаюсь удалить конкретную строку в таблице в php, и я пытаюсь использовать первичный ключ, который, как оказалось, имеет тип varchar
первичный ключ course_Code
course_Code||course_Title||credit_Load||lecturer_id
csc 450 || S.E || 3 || 0
lecturer_id
всегда будет 0 для всех добавленных записей, потому что я хочу использовать его как внешний ключ, только тогда значение будет изменено с 0 на что-то другое; проблема в том, что когда у меня есть только одно значение в таблице и я его удаляю, запрос выполняется, но добавляется новая строка только с credit_Load
а также lecturer_id
со значениями 0, в то время как другие столбцы остаются пустыми:
course_Code||course_Title||credit_Load||lecturer_id
|| || 0 || 0
Это код, для которого я написал firstpage.php
, значение в $result['course_Code']
Код курса извлекается из базы данных:
<a href="processor3.php?coursecode=<?php echo $result['course_Code']; ?>
затем processor3.php
:
if (isset($_GET['coursecode'])){
$course_id = $_GET['coursecode'];
$query = mysql_query("DELETE FROM courses WHERE course_Code = '$course_id'");
header("Location:firstpage.php?succ=2");
}
Я знаю, что использую устаревший способ подключения к mysql в php, но это не главная проблема, я пытаюсь научить кого-то php, и он, похоже, не очень хорошо понимает привязки pdo, поэтому я хочу, чтобы мы прогрессировали медленно в пдо. Я думаю, что я плохой учитель.
Ужасно, ужасно УЖАСНО !!!
$query = mysql_query("DELETE FROM courses WHERE course_Code = '$course_id'");
Пожалуйста, никогда не учите никого спрашивать таким образом. ВСЕ переменные должны быть экранированы, так как в противном случае существует уязвимость SQL INJECTION.
Что касается вашей проблемы, я подозреваю 2 возможных проблем:
Вы уверены, что ничего из вышеперечисленного не происходит?
Других решений пока нет …