2014-11-18 3 views
0

Я новичок в 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"; 
    } 
?> 

эта часть для удаления, но я не знаю, как получить ID

<?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!'; 
    } 
} 
?> 

Что я должен сделать для получения идентификатора и его удаления?

+1

'id' и' ID' являются * двумя разными животными * в целом. –

+0

ID - это имя столбца в базе данных – Haredy

+0

'? Id' и' $ _GET ['ID'] ';) –

ответ

0

Первый вопрос, который я вижу это вы не запрашивать Id из базы данных. Измените свой первый запрос:

$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']; 
+0

Вы также можете избежать передачи имени студента через URL-адрес, запросив его из базы данных с учетом $ _GET ['ID'], который вы передали, что может быть немного но будет иметь дополнительные накладные расходы на запрос базы данных. – Dale

+0

Среда для чувствительности к корпусу – Dale

0

'ID'! = 'ID' Попробуйте

if(isset($_GET['id'])){ 
    $id = (int) $_GET['id']; 
    if ($id > 0) 
     $myquery= mysql_query($sql); 
} 
+2

Да, я это сказал. –

+0

Когда я его использую, я получил это сообщение: «Студент № 0 был израсходован!» однако нет никаких данных его ID = 0 – Haredy

0

Вероятно, эта помощь, принимать во внимание, если ваши ссылки, показывающие, что они должны иметь идентификатор:

$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 как предложение)

0

Вам необходимо передать параметр 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