Я новичок в PHP и стараюсь отображать данные из базы данных, а также удалять их
это для просмотра данных
<?php
require_once 'config.php';
$que="SELECT 'Fname', 'Lname' FROM 'students'";
$myRun= mysql_query($que);
$numOfRows=mysql_num_rows($myRun);
if ($numOfRows> 0) {
while($row = mysql_fetch_array($myRun)) {
echo "First Name: " . $row['Fname']. " - Last Name: " . $row['Lname'];
echo ' <a href="update.php?id="/>Edit</a>
<a href="delete.php?id="/>Delete</a><br/>';
}
} else {
echo "There isn't data to be viewed";
}
?>
эта часть для удаления, но я не знаю, как получить идентификатор
<?php
require_once 'config.php';
if(isset($_GET['ID'])){
$id=$_GET['ID'];
$sql="DELETE FROM 'students' WHERE 'ID'=$id";
$myquery= mysql_query($sql);
if($myquery){
echo 'The Student #'.$id.'has beed deledted!';
}
}
?>
что я должен сделать для получения идентификатора и удалить его?
Первая проблема, я вижу, вы не запрашивали идентификатор из базы данных. Измените свой первый запрос на:
$que="SELECT 'ID', 'Fname', 'Lname' FROM 'students'";
Если таблица учеников не имеет идентификатора, измените таблицу, чтобы дать ей, и, вероятно, сделайте ее первичным ключом и автоматически увеличивайте.
Затем измените ссылку на удаление:
<a href="delete.php?ID=<?php echo $row['ID'];?>">Delete</a>
Затем измените свой комментарий к этому:
echo 'The Student #'.$_GET['ID'].'has been deleted!';
Вы можете пожелать вместо комментирования с идентификатором, передать имя и фамилию, и сказать, что ученик "Боб Смит" был удален. Для этого вы измените ссылку на удаление следующим образом.
<a href="delete.php?ID=<?php echo $row['ID'];?>&Fname=<?php echo $row['Fname'];?>&Lname=<?php echo $_GET['Lname'];?>">Delete</a>
Теперь у вас будет первое и последнее имя как переменные GET с тем же именем, что и их эквиваленты баз данных, что позволит вам сделать это:
echo 'The Student #'.$_GET['ID'].' ('.$_GET['Fname'].' '.$_GET['Lname'].') has been deleted!';
Наконец, как упоминалось выше в комментарии, вы захотите очистить идентификатор до его удаления, чтобы избежать инъекции sql.
Ваша строка удаления должна быть:
$sql="DELETE FROM 'students' WHERE 'ID'=".(int)$_GET['ID'];
Вам нужно передать параметр ID в свой скрипт в URL-адресе. Это то, что ищет $_GET['ID']
.
Таким образом, ваш URL-адрес будет похож на http://website.com/delete_student.php?ID=5
Тогда ваша переменная $id
будет установлена правильно, и ваш запрос должен работать.
Вы также можете использовать $_POST['ID']
если значение ID поступает из формы.
Вы также должны рассмотреть возможность использования функции mysql_real_escape_string, чтобы сделать ваш код более безопасным. Http://php.net/manual/en/function.mysql-real-escape-string.php
Вероятно, эта помощь, обратите внимание, если вы показываете ссылки, они должны иметь идентификатор:
$que="SELECT 'ID', 'Fname', 'Lname' FROM 'students'";
//more code...
while($row = mysql_fetch_array($myRun)) {
echo "First Name: " . $row['Fname']. " - Last Name: " . $row['Lname'];
echo ' <a href="update.php?id="'.$row['ID'].'>Edit</a>
<a href="delete.php?id="'.$row['ID'].'>Delete</a><br/>';
}
Из комментариев (@Rasclatt):
if(isset($_GET['id']) && is_numeric($_GET['id'])){
$id=$_GET['id'];
Затем вы можете изменить PDO или mysqli (PDO как предложение)
'id'! = 'ID' Попробуйте
if(isset($_GET['id'])){
$id = (int) $_GET['id'];
if ($id > 0)
$myquery= mysql_query($sql);
}
id
иID
- это два разных животных .